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

问题描述 投票:27回答:6

我正在读书The Java Programming Language, 3rd edition

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

更确切地说,除了可以在类本身内部访问以及在 同一包,也可以通过对象引用从类访问受保护的成员 至少与该类具有相同类型的类型,即对该类的类型的引用或 其子类型之一。

这些词使我感到困惑,在[[two方面:

1。

受保护的成员可以被同一包中的代码访问吗?我以前知道的受保护成员只能由子类访问...

2。

我不明白a protected member can also be accessed from ...是什么意思,任何人都可以向我解释吗?
java protected access-modifiers
6个回答
18
投票
  1. 是的,protected成员可以从类本身,该类的子类以及该类的同一包中的所有类(无论这些子类是否为子类)访问。如果您之前不知道最后一部分,那么您刚刚学到了一些新知识。
  2. 它只是意味着您可以使用这些成员;如果无法访问成员,则表示尝试使用该成员时会出现编译器错误。

11
投票
在Java中,protected表示该成员可以被同一包中的任何类以及子类访问,即使它们位于另一个包中。

A protected variable is not visible outside the package
  
例如,B扩展了A并且A具有受保护的int x;它可以在类B中使用。但是不能使用其实例变量进行访问]

2
投票
1)是,可以通过同一包中的类访问受保护的成员。这就是Java的工作方式。

2)这意味着子类可以访问它们。


0
投票
我不知道也可以从...访问受保护的成员,这意味着任何人都可以向我解释?

例如,您有一个对象A和一个对象B,它们都是同一类。如果对象A引用了对象B,则它可以查询对象B的受保护属性和方法。 protected修饰符在类级别而不是对象级别强制执行。在某些情况下可以派上用场。


0
投票
这里是答案

  1. 是。一个类的受保护成员(实例变量和方法)可以由同一包中的其他类以及扩展包含该要访问的成员的此类的任何其他类访问。在同一规范中,他们还提供了表格,其中访问级别正在严格增加,以提供上一级别所允许的所有访问:private-> package-> protected-> public
  2. X类的受保护成员(实例变量/状态和方法/行为)被继承并作为X子类(例如Y1,Y2,Y3)的一部分可见,并且可能会进一步下降到下一层,任何类型为X或Y1,Y2,y3的对象引用都可以用来访问该受保护的成员。

0
投票
只需将其视为公共和私人之间。您可以访问公共课程中的所有内容,而不能访问私人课程中的所有内容。
© www.soinside.com 2019 - 2024. All rights reserved.