使用多态,出现了Java初始化无效的问题
2018-06-22 本文已影响0人
虚无一代
前几天做一个项目,利用多态创建了一个对象,并对其传参了,但是调用其get方法的时候却发现其属性并没有被初始化。下面写了几个简单的例子来还原一下其具体情况:
这是父类ex
package tutorial1;
import java.util.ArrayList;
public class ex {
private int a;
private int b;
public ex(int a, int b) {
this.a = a;
this.b = b;
}
public ex(){
this(0, 0);
}
public int getA() {
return a;
}
public int getB() {
return b;
}
public void setA(int a) {
this.a = a;
}
public void setB(int b) {
this.b = b;
}
}
这是子类ex1
package tutorial1;
public class ex1 extends ex {
private int a;
private int b;
public ex1(int a, int b) {
this.a = a;
this.b = b;
}
}
这是检测方法:
package tutorial1;
public class userEx {
public static void main(String[] args) {
ex obj = new ex1(88, 88);
int a = obj.getA();
int b = obj.getB();
System.out.println(a);
System.out.println(b);
}
}
输出结果是:
最后发现问题其实就是子类中没有重写get方法,导致调用get方法的时候实际上是调用了父类方法,所以get到的是父类的属性值。新建对象的时候只是初始化了子类的属性值。这样自然就无法get到值了。