Kotlin 摘要受保护 属性
Kotlin Abstract Protected Property
如果我有以下 class 层次结构:
abstract class Foo<out T : Bar>() {
abstract protected val thing: T
}
class Baz : Foo<BarImpl> {
override protected val thing: T = ...
}
我在 Baz::thing 上收到警告说:
Redundant visibility modifier
这是否意味着编译器将其视为受保护的而不需要您指定,或者它必须是 public?
您将在 Kotlin 中收到 IDE 检查样式警告,例如不需要的额外分号、已经可以推断的额外泛型类型参数等。你的冗余可见性修改器是沿着相同的路线。
如果展开检查消息,您将看到全文:
This inspection reports visibility modifiers which match the default visibility of an element (public for most elements, protected for members that override a protected member).
如果您不想再看到什么,您可以在 IDE 中关闭检查。
关于此的更多说明:
覆盖祖先的方法或成员时 class 您已经处于与声明时相同的访问级别。说 protected
是显而易见的(编译器知道它是 protected
)。
如果需要,您可以再次重申访问修饰符。您可以将其更改为 public
,从而进一步打开它。但是你不能进一步限制它,例如转到 private
(因为如果它是私有的你怎么能覆盖它,这个想法与 override
不兼容)这会成为编译器错误。
如果我有以下 class 层次结构:
abstract class Foo<out T : Bar>() {
abstract protected val thing: T
}
class Baz : Foo<BarImpl> {
override protected val thing: T = ...
}
我在 Baz::thing 上收到警告说:
Redundant visibility modifier
这是否意味着编译器将其视为受保护的而不需要您指定,或者它必须是 public?
您将在 Kotlin 中收到 IDE 检查样式警告,例如不需要的额外分号、已经可以推断的额外泛型类型参数等。你的冗余可见性修改器是沿着相同的路线。
如果展开检查消息,您将看到全文:
This inspection reports visibility modifiers which match the default visibility of an element (public for most elements, protected for members that override a protected member).
如果您不想再看到什么,您可以在 IDE 中关闭检查。
关于此的更多说明:
覆盖祖先的方法或成员时 class 您已经处于与声明时相同的访问级别。说 protected
是显而易见的(编译器知道它是 protected
)。
如果需要,您可以再次重申访问修饰符。您可以将其更改为 public
,从而进一步打开它。但是你不能进一步限制它,例如转到 private
(因为如果它是私有的你怎么能覆盖它,这个想法与 override
不兼容)这会成为编译器错误。