*调用父类的构造器

调用父类的构造器**
(1)子类不会获得父类的构造器,但子类构造器可以调用父类构造器的初始化代码,类似于一个构造器调用另一个重载的构造器
(2)在一个构造器调用另一个构造器用this完成,在子类构造器中调用父类构造器用super完成。
——————————————————————————————————————————————————————————————————————
调用父类构造器示例代码:

class Base
{
public double size;
public String name;
//定义构造器
public Base(double size,String name) //构造器无返回值,无void
{
this.size=size;
this.name=name;

}

}

public class Sub extends Base

{
public String color;
//子类构造器
public Sub(double size,String name,String color)
{
//通过super来调用父类构造器初始化过程
super(size,name); //必须出现在子类执行体的第一行‘’
this.color=color;
}

public static void main(String[] args)
{
    Sub  s = new Sub(99.0,"zou","红色");


    System.out.println(s.size+s.size+s.name);
}

}
这里写图片描述

如上继承树所示,如果创建ClassB的对象,系统将先执行java.lang.Object构造器,再执行ClassA的构造器,再执行ClassB的构造器
——————————————————————————————————————————————————————————————————————————
下面定义了三个雷,有着严格的继承关系,通过这种关系可以看到构造器之间的调用关系。

class Creature
{
//定义构造器
public Creature(){
System.out.println(“Creature无参数的构造器”);
}
}

class Animal extends Creature
{
public Animal(String name){
System.out.println(“Animal自带参数的构造器:”+”该动物的name为:”+name);
}
public Animal(String name,int age){ //重载的构造器:名字相同,参数不同
//使用this调用同一个重载的构造器
this(name);
System.out.println(“Aniaml带两个参数的构造器”+”其age为”+age);
}

}

public class Wolf extends Animal

{
public Wolf()
{
//显示调用父类有两个参数的构造器
super(“喜洋洋”,3);
System.out.println(“Wof无参数的构造器”);
}

public static void main(String[] args)
{
    new Worf();
}

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值