Beziehung zwischen Kotlin- und Java-Zugriffsmodifikatoren

Einführung

Wir haben untersucht, wie Kotlins "öffentlich", "intern", "geschützt", "privat" und Java "öffentlich", "Paket privat", "geschützt", "privat" wie einander aussehen.

Lassen Sie uns zunächst sehen, welche Zugriffsrechte sie haben.

Java Access Modifier (Deklaration für Klasse)

public Von überall zugänglich
protected Kann nicht deklarieren
package private Kann von demselben Paket aus aufgerufen werden
private Kann nicht deklarieren

Java Access Modifier (Deklaration für Klassenmitglieder)

public Zugänglich von allen Klassen
protected Kann von Unterklassen oder Klassen im selben Paket aus aufgerufen werden
package private Kann von Klassen im selben Paket aus aufgerufen werden
private Nur von der deklarierten Klasse aus zugänglich

Kotlin-Zugriffsmodifikatoren (Deklarationen für Klassen / Funktionen / Variablen der obersten Ebene)

public Von überall zugänglich
internal Kann über dasselbe Modul aufgerufen werden
protected Kann nicht deklarieren
private Nur von der deklarierten Klasse aus zugänglich

Kotlin-Zugriffsmodifikator (Deklaration für Klassenmitglieder)

public Zugänglich von allen Klassen
internal Kann von Klassen im selben Modul aus aufgerufen werden
protected Nur über Unterklassen zugänglich
private Nur über die deklarierte Datei zugänglich

Beziehung zwischen Zugriffsmodifikatoren in Kotlin und Java

Kommen wir von hier aus zum Hauptthema und sehen, was passiert, wenn die Zugriffsmodifikatoren von kotlin von Java aus angezeigt werden.

Kotlins "private" Klasse

Kotlins Privatklassen gelten in Java als Paket privat.

A.kt


package com.example.model

private class A(name: String, age: Int, height: Int)

B.java


package com.example.model

public class B {

  public B() {
    A a = new A("taku", 23, 168); // OK
  }
}

C.java


package com.example.ui


public class C {

  public C(){
    A a = new A("taku", 23, 168) // ERROR
  }
}

interner Modifikator von Kotlin

Java hat keinen internen Modifikator. Daher wird alles, was in Kotlin als intern markiert ist, von Java als öffentlich angesehen. Wenn Sie jedoch ein Klassenmitglied sind, wird es verschleiert.

A.kt


package com.example.model

internal class A(val name: String, internal val age: Int, private val height: Int)

B.java


package com.example.model

public class B {

  public B() {
    A a = new A("taku", 23, 168); // OK

    a.getName(); // OK

    a.getAge(); // ERROR
    
    a.getAge$production_sources_for_module_example(); // OK
    
    a.getHeight(); // ERROR
  }
}

Recommended Posts

Beziehung zwischen Kotlin- und Java-Zugriffsmodifikatoren
Unterschiede zwischen "Anfänger" Java und Kotlin
[Java] Beziehung zwischen H2DB und JDBC
Konvertierung zwischen Kotlin nullable und Java Optional
[Für Anfänger] Unterschied zwischen Java und Kotlin
Informationen zu Java-Zugriffsmodifikatoren
[Java] Unterschied zwischen == und gleich
Beziehung zwischen Controller und Ansicht
Beziehung zwischen Paket und Klasse
[Java] Unterschied zwischen Hashmap und HashTable
[JAVA] Unterschied zwischen Abstract und Interface
[Java] Unterschied zwischen Array und ArrayList
Unterschiede zwischen Java und .NET Framework
[Java] Unterschied zwischen Closeable und AutoCloseable
[Java] Unterschied zwischen StringBuffer und StringBuilder
[Java] Unterschied zwischen Länge, Länge () und Größe ()
[Java] Einführungsstruktur Klassendefinition Beziehung zwischen Klasse und Instanz Methodendefinitionsformat
Die Beziehung zwischen strenger Java-Datumsprüfung und Sommerzeit
Informationen zur Beziehung zwischen dem Java String Equality Operator (==) und der Initialisierung. Anfänger
Unterschied zwischen final und Immutable in Java
[Java] Unterschiede zwischen Instanzvariablen und Klassenvariablen
Ein Java-Ingenieur verglich Swift, Kotlin und Java.
[Hinweis] Zusammenarbeit zwischen Java und DB (Basic)
Beziehung zwischen dem Eclipse m2e-Plug-In und Maven
[Java] Unterschied zwischen Intstream-Bereich und rangeClosed
Unterschied zwischen int und Integer in Java
HashMap # putAll () verhält sich zwischen Java 7 und Java 8 unterschiedlich
Interpretieren Sie die Beziehung zwischen Java-Methoden und Argumenten in biochemischen Formeln
Zugriffsmodifikator [Java]
[Java] Verstehe den Unterschied zwischen List und Set
Kotlin-Funktionen und Lambdas zum Senden an Java-Entwickler
Java switch Anweisung und break, Kotlin beim Ausdruck ...
Unterschied zwischen next () und nextLine () in Java Scanner
Fassen Sie die Unterschiede zwischen C # - und Java-Schrift zusammen
Java und JavaScript
XXE und Java
Unterscheiden Sie in Java zwischen positiven und negativen Zahlen
[Java] Unterschied zwischen "endgültiger Variable" und "unveränderlichem Objekt"
So greifen Sie auf Java Private-Methoden und -Felder zu
Beziehung zwischen UI-Test und Aufzeichnung, Implementierungsmethode
Organisieren Sie den Unterschied im Schreibkomfort zwischen dem Java-Lambda-Ausdruck und dem Kotlin-Lambda-Ausdruck.
Informationen zu Zugriffsmodifikatoren
Zurück zum Anfang und erste Schritte mit Java ① Datentypen und Zugriffsmodifikatoren
Beispiel für eine OAuth 2.0-Authentifizierung und Zugriffstokenerfassung (Java)
Bitte beachten Sie die Aufteilung (Aufteilung) von Java Kotlin Int und Int
Java-Sprache aus der Sicht von Kotlin und C #
Schreiben Sie eine Klasse in Kotlin und nennen Sie sie in Java
Access Qualifier Summary-JVM-Sprachausgabe (Java / Groovy / Scala / Kotlin)
Informationen zur Beziehung zwischen HTTP-Methoden, Aktionen und CRUD
[Java] Unterschied zwischen statischem final und final in Mitgliedsvariablen
[JAVA] Was ist der Unterschied zwischen Schnittstelle und Zusammenfassung? ?? ??
Überprüfung der Beziehung zwischen dem Docker-Image und dem Container
Ich möchte Bildschirmübergänge mit Kotlin und Java machen!
Konvertieren Sie mit Moshi zwischen Java-Objekten und JSON
[Java] [Kotlin] Rufen Sie valueOf und Werte von Enum generisch auf
[Java-Anfänger] Unterschied zwischen Länge und Länge () ~ Ich weiß nicht ~
Getter und Setter (Java)