我为SCJP做准备,我也知道受保护成员的作用域在包中以及在其他包中(在某些情况下,例如只有继承才可能)。
例如:我有三个类作为Parentclass Childclass Friendclass
package x.parent;
class Parentclass{
protected int x=10;
...............
}
package x.child;
class Childlass extends Parentclass{
super.x=20;
...............
}
package x.child;
import x.parent.Parentclass;
class Friendclass{
Parentclass pc = new Parentclass();
pc.x=30;
...............
}
这背后的原因是什么,在Friendclass中,成员x将不接受为其分配值,而对于Childclass而言,它充当私有成员。
您甚至无法访问Parentclass.x
,Childclass
因为x
具有默认可见性(不受保护)。参见http://download.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
编辑:
x.child.Friendclass
与 不在同一个软件包 中x.parent.Parentclass
。
x.child.Friendclass
不继承 自x.parent.Parentclass
。
如TotalFrickinRockstarFromMars的摘要状态和Java访问控制文档中所述,这意味着Friendclass
不允许访问该字段x
。
我试图理解类中受保护成员的行为。我有一个类,其中包含受保护的整数。 类别: 还有另一个包,它有3个类,和。继承层次结构如下: 第1子类 子课堂 第3子类 在上述代码中,,,,,和工作正常,没有任何可见性问题。但是,,存在可见性问题。 根据JLS§6.6.2.1, 让C是声明受保护成员的类。只允许在C的子类S的主体内进行访问。 此外,如果Id表示实例字段或实例方法,则: 如果访问是通过限定名Q.Id
我正在阅读这本Java SCJP的书,我偶然发现了以下内容: 但是我得到了这个错误: 那么,出什么问题了?
6xx受保护 600 Series,Repliesregardingconfidentialityandintegrity 631 Integrityprotectedreply. 632 Confidentialityandintegrityprotectedreply. 633 Confidentialityprotectedreply.
问题内容: 我想对此进行一些讨论,但无法推断出我的情况的答案。仍然需要帮助。 这是我的代码: 在上面的示例中,下面的一些定义似乎令人困惑: 问题: 为什么我不能从子类实例(对象)访问受保护的成员()? 问题答案: 作为声明类的子类的其他包中的类只能访问其自己的继承成员。 …但不是其他对象的继承成员。
在< code>/users下,我有一些需要身份验证令牌的路由,还有一些不需要。为了实现这一点,我做了以下工作。 然后我按照以下方式安装这些路线。 当我向< code>/users发送POST时,它运行预期的路径,但是当< code>next()被调用时,< code > protected _ middleware 运行。这是因为它在标有“D”的行中找到了下一个< code>/users定义。
问题内容: 为什么在最终课程中允许受保护的成员? 这不应该是编译时错误吗? 编辑:正如人们指出的那样,您可以使用默认修饰符来获得相同的程序包访问权限。它的行为应该完全相同,因为protected是默认+子类,而final修饰符明确地拒绝了子类,因此我认为答案不只是提供相同的程序包访问。 问题答案: 该改性剂是必要的方法其覆盖从基类的方法,在没有那些构件暴露于所述。 通常,您可以引入很多不必要的规则