【问题标题】:How to limit Java scope to child classes?如何将 Java 范围限制为子类?
【发布时间】:2013-11-30 01:50:20
【问题描述】:

所以,我正在尝试创建一个只能由其声明类及其子类直接访问的变量。我的印象是protected 是它的作用域修饰符,但我刚刚(重新)发现它还允许同一个包中的类直接访问。
是否有一个范围修饰符可以满足我的要求?

【问题讨论】:

    标签: java inheritance scope


    【解决方案1】:

    是否有一个作用域修饰符可以满足我的需求?

    No, there is not. 唯一允许在子类中访问的两个作用域是publicprotected。没有这样的修饰符是合理的,因为您无法控制谁可以扩展您的类,也不能扩展您的类:可以看到该类的每个人都可以扩展它,或者没有人可以(因为该类是final) .

    【讨论】:

    • 有什么办法可以去做我想做的事吗?
    • 不要太担心访问修饰符。它们是对您的代码的读者和消费者的有用提示,而不是铁定的安全性。 protected 应该没问题。
    • @Matt Ball,因为无论如何它们都可以被反射绕过。
    • 只是不要将任何其他类与父类一起放在包中!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-21
    • 1970-01-01
    相关资源
    最近更新 更多