Kotlin抽象受保护的财产
如果我有以下类层次结构:
abstract class Foo() { abstract protected val thing: T } class Baz : Foo { override protected val thing: T = ... }
我对Baz ::事情说:
冗余可见性修改器
这是否意味着编译器将其视为受保护的,而不需要指定或者必须公开?
您将在Kotlin中收到一个IDE检查样式警告,例如您不需要的额外分号,额外的genericstypes参数以及更多。 您的冗余可见性修改器沿着相同的路线。
如果您展开检查信息,您将看到全文:
此检查报告与元素的默认可见性匹配的可见性修饰符(大多数元素为public,受保护的用于覆盖受保护成员的成员的保护)。
如果不再需要查看,可以在IDE中关闭检查。
关于这一点的更多的注意事项:
当覆盖祖先类的方法或成员时,您已经处于与声明时相同的访问级别。 说protected
是明显的(知道它的编译器是protected
)。
如果需要,您可以再次重新访问访问修饰符。 而且可以通过将其更改为public
来打开它。 但是你不能进一步限制它,例如去private
(因为如果它是私人的,你怎么可以覆盖它,这个想法是不符合override
),这成为一个编译器错误。