abstract class A { public A() { this.print(); } public abstract void print(); }class B extends A { private int x = 100; public B(int x) { this.x = x; } public void print() { System.out.println("x = " + x); } }public class InstanceDemo { public static void main(String args[]) { A a = new B(10); }} 看看这个程序的结果就知道了!!!!!!!!!!!!!!
如果 ColorFish类 继续于 Fish类,Fish类继承于 Animal类
对olorFish进行实例化时,各个类的构造函数的执行顺序是怎样的?
是 Animal--> Fish--> ColorFish 的顺序执行构造函数么?
1. 在Animal中声明无参构造(这也是编写顶级父类的好习惯)2. 在子类构造函数中显示调用父类中存在的构造函数个人比较喜欢第一种
最好将父类的构造方法重写吧,比如父类是animal 它只有叫声,那你的fish还会游泳啊,对吧!
a.在创建对象时,对象所在类的所有数据成员会首先进行初始化
b.继承时的初始化:
经验证:超类静态数据—》子类静态数据—》超类的非静态数据—》超类的构造方法—》子类的非静态—》子类的构造方法好久以前读的一本叫《java百事通》时整理的
public A() {
this.print();
} public abstract void print();
}class B extends A {
private int x = 100; public B(int x) {
this.x = x;
} public void print() {
System.out.println("x = " + x);
}
}public class InstanceDemo {
public static void main(String args[]) {
A a = new B(10);
}}
看看这个程序的结果就知道了!!!!!!!!!!!!!!