构造器访问
子类访问父类
- 默认首先访问父类无参构造器,接着访问子类无参构造器。
- 子类构造器第一行默认为super(),不写也会执行super()。
class Animal {
public Animal () {
System.out.println("this is Animal..");
}
}
class Cat extends Animal {
public Cat () {
super(); // 默认存在
System.out.println("this is cat..");
}
public Cat (String name) {
System.out.println("this is cat.." + name);
}
}
public class Test {
public static void main(String[] args) {
Cat cat = new Cat();
/**
* this is Animal..
* this is cat..
*/
Cat cat2 = new Cat("miao");
/**
* this is Animal..
* this is cat.. miao
*/
}
}
构造器访问(有参)
子类构造器默认会调用super()。当super()有参数时,则不会调用super()。
class AJavaTestFu {
int num;
AJavaTestFu() {
num = 10;
System.out.println("Fu 001: " + num);
}
AJavaTestFu(int num) {
System.out.println("Fu 002: " + num);
}
}
class AJavaTestZi extends AJavaTestFu {
int num;
AJavaTestZi()
{
//super();//调用的就是父类中的空参数的构造函数。
System.out.println("AJavaTestZi 001");
}
AJavaTestZi(int x)
{
super(30);
System.out.println("AJavaTestZi 002: "+x);
}
}
public class AJavaTest{
public static void main(String args[]) {
new AJavaTestZi(25);
}
}
运行结果:
Fu 002: 30 // 父类无参构造器不会再被调用。
AJavaTestZi 002: 25