受保护的修饰符是什么意思?

2022-09-01 09:55:18

我正在读《Java编程语言》这本书,第3版

在第3.5章中,它用以下文字说明了修饰符:protected

更准确地说,除了在类本身内访问和在同一包中编写代码之外,还可以通过与类(即类的类型或其子类型的引用)至少具有相同类型的对象引用从类访问受保护的成员。

这句话让我感到困惑,在个方面:

1.受保护的成员可以通过同一包内的代码访问吗?我之前知道的是受保护的成员只能由子类访问...

2.我不明白这是什么意思,任何人都可以向我解释吗?a protected member can also be accessed from ...


答案 1
  1. 是的,可以从类本身,类的子类以及类的同一包中的所有类访问成员(无论这些类是否是子类)。如果你以前不知道最后一部分,那么你刚刚学到了一些新东西。protected

  2. 它只是意味着您可以使用这些成员;如果某个成员不可访问,则意味着当您尝试使用它时,您将收到编译器错误。


答案 2

在 Java 中,这意味着成员可以由同一包中的任何类和子类访问,即使它们位于另一个包中。protected

注意

A protected variable is not visible outside the package

例如,B 扩展 A,A 有一个受保护的整数 x;它可以在B类中使用。但无法使用其实例变量进行访问


推荐