【问题标题】:In Java, how can I create a variable that's only visible to the class and subclasses, and to no other class in the package?在 Java 中,如何创建一个仅对类和子类可见,而对包中的其他类不可见的变量?
【发布时间】:2017-09-03 08:17:41
【问题描述】:

如果类 B 扩展了 A,那么 A 的公共和受保护变量由 B 继承,而私有变量则不是。但是同一包的其他类可以直接访问公共变量和受保护变量。

如何将这些继承的变量设为私有?

【问题讨论】:

  • 如果您想发疯,请在静态代码分析器中使用自定义注释和自定义规则,然后将其与您的构建工具一起使用,并在有包但非子类时使您的构建失败这种带注释的方法的方法调用。

标签: java encapsulation


【解决方案1】:

你不能。 Java 的访问修饰符不足以表达这一点。

阻止同一个包中的其他类访问的唯一方法是让它空洞真实:同一个包中没有其他类。

【讨论】:

  • 我真的很难理解。首先根据 Java 的方式,您应该将所有字段设为私有。但是,如果你想继承一个字段,它不应该是私有的。那么我将如何将继承的字段设为私有?为什么我不允许?
【解决方案2】:

不确定它是否适合这里,因为没有足够的详细信息,但如果只想授予对特定方法的访问权限,您可以创建一个接口来公开您想要的内容并让您谈论的类实现它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-10
    • 1970-01-01
    • 2016-02-15
    • 2013-10-19
    • 2015-03-13
    • 1970-01-01
    • 2015-03-01
    • 1970-01-01
    相关资源
    最近更新 更多