0
点赞
收藏
分享

微信扫一扫

Java - Super


构造器访问

子类访问父类

  1. 默认首先访问父类无参构造器,接着访问子类无参构造器。
  2. 子类构造器第一行默认为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

举报

相关推荐

0 条评论