Java 测试题3

来源:百度知道 编辑:UC知道 时间:2024/05/11 18:09:18
// Filename; SuperclassX.java
package packageX;

public class SuperclassX
{
protected void superclassMethodX()
{
}
protected int superclassVarX;
}

// Filename SubclassY.java
1. package packageY;
2. import packageX.*;
3. public class SubclassY extends SuperclassX
4. {
5. SuperclassX objX = new SubclassY();
6. SubclassY objY = new SubclassY();
7. void subclassMethodY()
8. {
9. objY.superclassMethodX();
10. int i;
11. i = objX.superclassVarX; //?错在哪里
12. }
13. }

?错在哪里

错在 你定义的 int superclassVarX 是 protected 访问权限,在不同的包里 是访问不了的,如果两个类在同一个包里就可以访问,如果在两个不同的包中就 改成public 就可以访问了

package packageX;

public class SuperclassX {
protected void superclassMethodX() {
}

public int superclassVarX;
}

package packageY;

import packageX.*;

public class SubclassY extends SuperclassX {
SuperclassX objX = new SubclassY();
SubclassY objY = new SubclassY();

void subclassMethodY() {
objY.superclassMethodX();
int i;
i = objX.superclassVarX;
}

}

protected标识的变量不能在包外被引用
protected标识的变量只能被该类的子类或者本包内的类引用

9. objY.superclassMethodX();
SubclassY上哪引用superclassMethodX方法啊。。。。要引用也要继承啊