<p>有些人看到前面我的解释后,可能会想到如果我的父类是抽象类呢,不是抽象类不能new对象的吗?如果你想到这个说明你的基础还不错,</p><p>请听我慢慢道来,请看下面一段代码:</p>
package cn.up.demo6;
public abstract class Fu {
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public abstract void fu();
}
package cn.up.demo6;
public class Zi extends Fu {
@Override
public void fu() {
System.out.println("aaaa");
}
}
package cn.up.demo6;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Zi z = new Zi();
z.setAge(45);
System.out.println(z.getAge());
}
}
程序运行结果:45
如果子类对象z中没有父类对象,父类中的成员变量是哪里来的呢?要知道成员变量是存在对象中的。
通过这个例子同样解释了为什么 子类继承自抽象类 当要new一个子类对象,必须重写父类的全部抽象方法。
通过这个例子我们可以大胆的猜测:如果一个类是抽象类,那当然不能显式new对象了,但是如果一个子类继承自一个抽象类,显式地new一个子类对象,那么那个抽象父类应该是由JVM来new的