5

拥有一个基类,我希望它及其后代类仅在内部可见:

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
}

如何让后代类访问某个“内部”类的实例?

4

1 回答 1

5

上面的错误是保护internal不在内部类的同一模块中的其他类访问的类。如果允许,则不能保证该类User仅由同一模块中的类继承。

因此,如果您想制作class_A_list受保护的内容,则必须制作Userinternal。通过这样做,它将保证,User将被同一模块中的类继承。以下应该没问题:

internal open class User {
   protected var class_A_list: List<Class_A>? = null
}
于 2020-06-21T20:25:14.063 回答