Nous avons étudié comment kotlin «public», «interne», «protected», «private» et «public» de java, «package private», «protected», «private» se ressemblent.
Voyons d'abord de quel type de droits d'accès ils disposent.
public | Accessible de n'importe où |
---|---|
protected | Je ne peux pas déclarer |
package private | Accessible à partir du même package |
private | Je ne peux pas déclarer |
public | Accessible depuis toutes les classes |
---|---|
protected | Accessible à partir de sous-classes ou de classes dans le même package |
package private | Accessible depuis les classes du même package |
private | Uniquement accessible depuis la classe déclarée |
public | Accessible de n'importe où |
---|---|
internal | Accessible depuis le même module |
protected | Je ne peux pas déclarer |
private | Uniquement accessible depuis la classe déclarée |
public | Accessible depuis toutes les classes |
---|---|
internal | Accessible à partir des classes du même module |
protected | Uniquement accessible depuis les sous-classes |
private | Uniquement accessible depuis le fichier déclaré |
Entrons dans le sujet principal à partir d'ici, voyons ce qui se passe lorsque les modificateurs d'accès de kotlin sont visualisés à partir de Java.
privée
de kotlinLes classes privées de kotlin sont considérées comme des packages privés en java.
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
}
}
Java n'a pas de modificateur interne. Par conséquent, tout ce qui est marqué comme interne dans kotlin est considéré comme public par Java. Cependant, si vous êtes un membre de la classe, il sera masqué.
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