【问题标题】:if there are 3 classes A,B,C a and b are in same package c is in different package, to access fields of A why C must be child of A but not b?如果有 3 个类 A、B、C a 和 b 在同一个包中 c 在不同的包中,要访问 A 的字段,为什么 C 必须是 A 的子级而不是 b?
【发布时间】:2014-07-20 22:41:38
【问题描述】:

A类、B类、C类。

如果 A 类和 B 类在同一个包中,但不在 C 中; 访问 A 类字段; C 必须是 A 的子级。此规则不适用于 B 类,它可能是也可能不是 A 的子级才能访问字段。为什么?

【问题讨论】:

  • 向我们展示您的示例代码?
  • 如果您谈论的是protected 字段,那么这就是规则,因为……这就是规则。 protected 在 Java 中的意思是“可以被同一个包中的类或子类访问。”

标签: java inheritance packages


【解决方案1】:

class Aclass B的字段声明为public。当您不放置 publicprivate 等时,默认可见性是字段仅对同一包中的类可见。

来自 java 文档:

如果一个类没有修饰符(默认,也称为 包私有),它只在自己的包中可见(包 是相关类的命名组——您将在 下一课。)

http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

【讨论】:

    猜你喜欢
    • 2014-03-29
    • 2011-08-01
    • 2015-11-20
    • 2012-09-03
    • 1970-01-01
    • 2021-10-06
    • 1970-01-01
    • 2011-05-30
    • 2015-11-28
    相关资源
    最近更新 更多