为什么这段代码是错误的,Java简单地说是错误的?
我现在简单地读了Java,我遇到了一个关于Java的问题。这个例子来自这本书。见: e、 g: 作者的意思是,因为B的实例不能访问A的任意实例。 如果我们像第二个那样更改代码,那么编译器会很高兴,因为相同类型的实例总是可以看到 相互保护的领域。 我不明白作者的意思,那到底是什么?B扩展了A。 x在A中受保护。 所以B可以访问B中的x 但是,B不能访问A中的x(不是B) 考虑一个扩展了a的类C为什么这段代码是错误的,Java简单地说是错误的?,java,Java,我现在简单地读了Java,我遇到了一个关于Java的问题。这个例子来自这本书。见: e、 g: 作者的意思是,因为B的实例不能访问A的任意实例。 如果我们像第二个那样更改代码,那么编译器会很高兴,因为相同类型的实例总是可以看到 相互保护的领域。 我不明白作者的意思,那到底是什么?B扩展了A。 x在A中受保护。 所以B可以访问B中的x 但是,B不能访问A中的x(不是B) 考虑一个扩展了a的类C 你能看到B不能访问C的x的原因(面向对象的原则)吗不是有效的导入语句。这已经错了…保护字符串x!=受保护
你能看到B不能访问C的x的原因(面向对象的原则)吗代码>不是有效的导入语句。这已经错了…
保护字符串x代码>!=<代码>受保护字符串x
您是否混淆了私有
和受保护
?如果某些内容不清楚,您应该指定哪些内容不清楚。他只是说你不能在包含受保护变量的类之外访问受保护变量。@Jeroenvanevel的问题是:为什么在getX()方法签名中,我不能写下getX(a){…a.name…},但是getX(B){…B.name…}是正确的?否决票是怎么回事?
package de;
public class A
{
protected String x;
}
package uk;
import de.*;
class B extends A
{
//First One
public String getX(A a)
{
return "getX works" + a.x;//ERROR: x has protected access in A
}
//Second One
public String getX(B b)
{
return "getX works" + b.x; // WORKS!
}
}