子类构造方法第一句总是super(),来调用父类的构造方法,无论加与不加;静态初始化块同理先执行父类静态初始化块
package study.com;
public class SuperDemo {
public static void main(String[] args) {
Dog d = new Dog();
d.eat();
}
}
class Animal{
int age;
String name;
static{
System.out.println("这里是Animal静态初始化块");
}
public Animal(){
System.out.println("Animal的构造方法");
}
public void eat(){
System.out.println("动物吃东西!");
}
}
class Dog extends Animal{
static{
System.out.println("这里是Dog静态初始化块");
}
public Dog(){
super(); //子类构造方法第一句总是super(),来调用父类的构造方法,无论加与不加;静态初始化块同理先执行父类静态初始化块
System.out.println("dog的构造方法");
}
public void eat(){
super.eat();
System.out.println("狗吃骨头!");
}
}
执行结果:
这里是Animal静态初始化块
这里是Dog静态初始化块
Animal的构造方法
dog的构造方法
动物吃东西!
狗吃骨头!