【发布时间】:2023-03-12 02:36:01
【问题描述】:
我有一个这样定义的类:
package prueba;
public class OtraClase {
[...]
protected int num3;
[...]
另外一个类是这样定义的:
package otro;
import prueba.*;
public class OtraClaseMas extends OtraClase{
但是,如果在最后一课中我创建了一个 OtraClase 对象,我将无法执行以下操作:
createdObjectOfOtraClase.num3=1;
我认为根据文档我应该能够做到,here。它说受保护的修饰符允许另一个包中其类的子类访问。尽管我看到它,但我认为它只是另一个包中它的类的子类。
我是不是误会了什么?
编辑:我要么使用类的构造函数,要么使用另一个不同的函数,但它在任何地方都不起作用。
构造函数代码:
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
}
【问题讨论】:
-
你能告诉我们
createdObjectOfOtraClase.num3=1;的电话在哪里吗? -
我无法重现该问题。如果对
createdObjectOfOrtaClase.num3 = 1的调用发生在OrtaClaseMas内,它应该可以工作。 -
你有没有 - 有没有机会 - 将
num3声明为final?