lan*_*nyf 5 inheritance class-visibility kotlin
拥有一个基类,我希望它及其后代类仅在内部可见:
internal abstract class BaseClass
internal open class Class_A: BaseClass()
internal open class Class_B: Class_A()
Run Code Online (Sandbox Code Playgroud)
在列表Class_A(也可能包含Class_B在其中)的位置,希望对其自己的后代类进行保护以访问此列表
open class User {
// got error: 'protected' property exposes its internal return type"
protected var class_A_list: List<Class_A>? = null
}
class User_descendent: User() {
// can access the class_A_list
}
Run Code Online (Sandbox Code Playgroud)
如何让后代类访问某个“内部”类的实例?
上述错误是保护类internal被不在内部类的同一模块中的其他类访问。如果允许,那么您不能保证该类User只能由同一模块中的类继承。
因此,如果你想使class_A_list受保护的,你必须使User类internal。通过这样做,它将保证User将被同一模块中的类继承。以下应该没问题:
internal open class User {
protected var class_A_list: List<Class_A>? = null
}
Run Code Online (Sandbox Code Playgroud)