有一个基类,我希望它及其后代类仅在内部可见:
internal abstract class BaseClass
internal open class Class_A: BaseClass()
internal open class Class_B: Class_A()
在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
}
如何让后代类访问某个"内部"类的实例?
上面的错误是保护internal
类,以便其他类访问,这些类不在内部类的同一模块中。如果允许,则无法保证类User
仅由同一模块中的类继承。
因此,如果要使class_A_list
受到保护,则必须使User
类internal
。通过这样做,它将保证User
将被同一模块中的类继承。以下应该没问题:
internal open class User {
protected var class_A_list: List<Class_A>? = null
}