【发布时间】:2016-11-13 16:19:50
【问题描述】:
我正在尝试学习 java oop,但当我做一些示例时,我发现在理解 super 方法的使用方面存在一些问题。请检查下面的代码。
你能告诉我为什么 super();方法不引用超类?我不明白。
超类:
package javaapplication;
public class A {
protected String val;
public A(){
this.val = " Class A ";
}
}
子类
package javaapplication;
public class B extends A {
public B(){
this.val = " Class B";
System.out.println(super.val);
}
}
主类
package javaapplication;
public class JavaApplication {
public static void main(String[] args) {
B a = new B();
}
}
输出:运行:B 类
为什么我得到“B级”?
【问题讨论】:
-
因为您在
B构造函数中将其分配给Class B?你期待什么?val在两个类中都是一样的。 -
你期望输出什么?
-
super.methodA() 的行为与 super.variableA 不同。 变量没有覆盖,因此只有一个副本