gpt4 book ai didi

java - 为什么我不能以这种方式访问​​ Java 中的 protected 变量?

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:07:16 26 4
gpt4 key购买 nike

我有一个这样定义的类:

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com