class Animal {
public String name;
public int age;
public Animal(){
this("dog",4);
System.out.println("这是一个默认构造方法");
}
public Animal(String name, int age) {
this.name = name;
this.age = age;
System.out.println("调用构造方法");
}
{
System.out.println("这是一个实例代码块!");
}
static {
System.out.println("这是一个静态代码块!");
}
}
public class TestDemo1017_1 {
public static void main(String[] args) {
Animal animal = new Animal("cat",1);
Animal animal1 = new Animal();
}
}
如果主函数这样调用:
public static void main(String[] args) {
Animal animal = new Animal("cat",3)
}
得到的结果为:(先执行静态代码块,再执行实例代码块,最后调用构造方法)
如果主函数这样调用:
public static void main(String[] args) {
Animal animal1 = new Animal();
}
得到的结果为:(先执行静态代码块,再执行实例代码块,再调用有参数的构造方法,最后执行默认的构造方法)
如果主函数这样调用:
public static void main(String[] args) {
Animal animal = new Animal("cat",3);
Animal animal1 = new Animal();
}
得到的结果为: