我有一个这样定义的类:
package prueba;
public class OtraClase {
[...]
protected int num3;
[...]
另一个类是这样定义的:
package otro;
import prueba.*;
public class OtraClaseMas extends OtraClase{
但是如果在最后一节课中我创建了一个 OtraClase 对象,我就不能这样做:
createdObjectOfOtraClase.num3=1;
而且我认为根据文档我应该能够,here .它说 protected 修饰符允许另一个包中其类的子类访问。就我对它的看法而言,我不认为它只是另一个包中其类的子类。
我是不是误会了什么?
编辑:我要么在使用类的构造函数,要么在另一个不同的函数中使用,但它在这两个地方都不起作用。
构造函数代码:
public OtraClaseMas(int num, int num2,int num3)
{
super(num, num2,num3);
OtraClase oc=new OtraClase(1,1,1);
//oc.num3=1; This doesn't work
}
方法代码:
public void foo()
{
OtraClase oc=new OtraClase(1,1,1);
//oc.num3=1; This doesn't work
}
最佳答案
protected
变量可以从同一个包或派生类访问它们自己的成员的方式相同,但是如果您在包的外部创建父类(super class)的实例父类(super class),即使您正在扩展同一个父类(super class),您也无法访问它
package packageA;
public class ClassA {
protected int variableA;
}
package packageA;
public class ClassC {
public void setVariableA() {
ClassA classA = new ClassA();
classA.variableA = 1; // OK
}
}
package packageB;
public class ClassB extends ClassA {
public void setVariableA() {
ClassA classA = new ClassA();
variableA = 1; // OK
classA.variableA = 1;// this wont work
}
}
关于java - 为什么我不能以这种方式访问 Java 中的 protected 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37362497/