- 简单理解,模块相当于jar aar文件
- protected 不允许在文件定义
open class Tree {
protected class Stem {
}
}
internal
一般用在开发第三方SDK,不公开类,如果是 JAVA 可能导致层次混乱。
package com.example.kotlinpractice.core;
public class JavaCost {
public void getCostByJava() {
}
}
package com.example.kotlinpractice;
import com.example.kotlinpractice.core.JavaCost;
public class JavaAPI {
private JavaCost javaCost = new JavaCost();
void getCost() {
javaCost.getCostByJava();
}
}
JavaCost 与 JavaAPI 是不同的包路径,需要public才能访问,但是使用 public 把JavaCost类暴露了。Java的解决方案是把JavaCost 与 JavaAPI 放在同个包名下,当类原来越多时,这就导致代码层次结构混乱。
package com.example.kotlinpractice.core
internal class KotlinCost {
internal fun getCostByKotlin() {}
}
package com.example.kotlinpractice
import com.example.kotlinpractice.core.KotlinCost
class KotlinAPI {
private val kotlinCost = KotlinCost() //此处必须 private 或 internal,否则就暴露了
fun getCost() {
kotlinCost.getCostByKotlin()
}
}