【问题标题】:Is there a way that only class that inherits a class sees its members. They are both in the same package有没有一种方法,只有继承一个类的类才能看到它的成员。它们都在同一个包中
【发布时间】:2016-07-09 01:40:59
【问题描述】:

例如我们有三个类。

有一些成员的 A 类 B 类扩展 A 类 我们得到了主课 而且它们都在同一个包中!

有什么方法可以让 A 类中的成员只能在 B 类中访问,因为 B 类扩展了 A 类。

如果我们在 A 类中使用私有成员,那么 B 类就看不到我们继承的成员。

但是如果我们在 A 类中使用公共成员,那么 main 和 b 类都可以看到它的成员。

【问题讨论】:

  • 阅读访问修饰符(private、protected、public)
  • 我想问题是因为所有三个类都在同一个包中。

标签: java class oop inheritance


【解决方案1】:

据我了解您的问题,您不能这样做。无论您定义字段protected 还是不使用修饰符,您的类B 和您的Main 类将始终能够访问该字段。

这里的简单解决方案是将您的类A 移动到子包并声明字段protected。这样只有A 的子类和子包中的类才能访问该字段。

【讨论】:

  • 是的,那是我的问题。所以答案是无法完成。非常感谢:)
【解决方案2】:

使用“protected”访问修饰符

protected :只有该类的当前类和子类(有时也包括同包类)才能访问该字段或方法。

【讨论】:

  • 忘了提到类在同一个包中。现在编辑我的问题。
【解决方案3】:

使用protected 访问修饰符。

【讨论】:

    【解决方案4】:

    A 类是 B 类的超类, 您可以从任何地方从超类访问,创建该类类型的对象以及 this 的方法是否为 public 。如果它们是私有的,那么只有你可以从类的实现中访问它们,虽然不太明白你的意思......更好地解释一下自己

    protected 是一种类,它的功能是为同一类类型的成员发布的,而对所有其他类来说是私有的。

    【讨论】:

    • 她说只有子类才能访问其父类的成员
    猜你喜欢
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-31
    • 2018-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多