【发布时间】:2015-09-29 10:03:11
【问题描述】:
package accesslevelmodifiers;
public class AccessLevelModifiers {
public static void main(String[] args) {
Parent parent =new Parent();
Subclass subclass = new Subclass();
parent.go();
subclass.go();
System.out.println("===========");
subclass.setNumberPu(3);
parent.go();
subclass.go();
}
}
public class Parent {
public int NumberPu=100;
public void go(){
System.out.println(NumberPu);
}
}
class Subclass extends Parent{
public void setNumberPu(int NumberPu) {
super.NumberPu = NumberPu;
}
}
已成功构建并运行;但是结果是
100
100
===========
100
3
我对两件事感到困惑。 1.为什么我可以在子类中使用super.NumberPu?我的意思是如果我写
class Subclass extends Parent{
super.NumberPu = 3;
}
IDE 会说找不到符号。
- 我使用了 super,所以我认为父类中 NumberPu 的值将被分配为 3,但实际上分配的是子类中的值。谁能告诉我发生了什么?怎么会超。变成了这个。 ? 非常感谢!
【问题讨论】:
-
你认为你这里有多少对象,是什么类型的?
-
我这里有两个实例父类和子类,我有两个对象 NumberPu(int type) 在父类和 NumberPu(int type) 在子类。我说的对吗?
-
你不是。这个
new Parent()创建了一个Parent类型的对象。这个new Subclass()创建了一个Subclass类型的对象。这两个对象都可以访问自己的NumberPu字段。 -
谢谢你的解释!!所以我这里有两个对象(父类和子类),它们分别属于父类和子类类型。 Object parent 是 Parent 类的实例,而 Object 子类是 Subclass 类的实例。我想这听起来更好??
标签: java inheritance this variable-assignment super