继承关系中的构造方法

class Pet{
private String name;
private int health;
private int love; //为了演示,属性定为了不可继承的私有类型,但通过方法调用这些属性

public String getName(){
return name;
}

public int getHealth(){
return health;
}

public int getLove(){
return love;
}

//无参构造方法
public Pet(){
name = "宠物";
health = 100;
love = 20;
}
//有参构造方法
public Pet(String name){
this.name = name;
}
//父类的方法
public void print(){
System.out.println("我的名字叫"+name+",健康值是"+health+",亲密度为"+love);
}

}

class Dog extends Pet{
private String strain;
public Dog(String strain){
super(); //可以不写该句;
this.strain = strain;
/* 写不写super();语句都一样,如果没有通过super显示的调用父类的有参构造方法,也没有通过this显示的
调用自身的其他构造方法。系统会自动调用父类的无参构造方法。 */
}
//重写父类输出方法
public void print(){
System.out.println("Dog类\n我是一只"+getName()+",品种是"+strain+",健康值是"+getHealth()+",亲密度为"+getLove());
}
}

class Cat extends Pet{
private String sex;

//有参构造方法
public Cat(String sex){
super("宠物猫"); //调用父类相应的有参构造方法,与Dod中的super()不同;
this.sex = sex;
}
//重写父类输出方法
public void print(){
System.out.println("Cat类\n我是一只"+getName()+",性别是"+this.sex+",健康值是"+getHealth()+",亲密度为"+getLove());
}
}

class Pig extends Pet{
private String name = "笨猪";
private int IQ; //猪的智商

//无参构造方法;
public Pig(){
System.out.println("Pig类\n利用this.调用了自身的无参构造方法!");
}

//有参构造方法
public Pig(int IQ){
this(); //用this.调用自身的相应无参构造方法;
this.IQ = IQ;
}
//重写父类输出方法
public void print(){
System.out.println("我的名字叫:"+name+",智商是:"+IQ);
}
}

public class Dm{
public static void main(String[] args){
Dog d = new Dog("牧羊犬");
d.print();

Cat c = new Cat("雌");
c.print();

Pig p = new Pig(2);
p.print();
}
}
/*-----------------------------------
Dog类
我是一只宠物,品种是牧羊犬,健康值是100,亲密度为20
Cat类
我是一只宠物猫,性别是雌,健康值是0,亲密度为0
Pig类
利用this.调用了自身的无参构造方法!
我的名字叫:笨猪,智商是:2
-----------------------------------*/


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值