关于继承和多态(HeadFirst Java笔记)

继承是一个IS-A关系 

在继承树结构中,如果A继承B,B继承C,那么应该满足A IS B,A IS C。IS-A也可以用来测试继承关系是否正确

如果子类中打算引用父类的方法然后加上额外的行为应该怎么办?
你可以在父类中设计出所有子类都适用的方法的实现,然子类都可以不用完全覆盖掉父类的方法,
只是再加上额外的方法,你可以使用super这个关键词来取用父类
public void roam(){
super.roam;
}


关于子类对父类的方法和成员变量的继承 
子类可以继承父类的成员。这包括了实例变量和方法,父类可以通过存取权限决定子类是否能够继承某些特定的成员


多态 

Animal dog = new dog()
两者的类型虽然不相同,但是animal是dog的父类
将引用类型定义为animal,但是对象确实dog
Animal[] animal = new Animal[5];//声明Animal类型的数组,也就是说一个会保存Animal类型对象的数组
  animal[0] = new Dog();//可以放任何一个是Animal的子类对象进去
animal[1] = new Cat();
animal[2] = new Wolf();
animal[3] = new Lion();
animal[4] = new Hippo();
如果声明一个父类的引用变量,并且赋予子类的对象给它:
class Vet {
public void giveShot(Animal a){
//做一些随心所欲的事情,例如将dog或者cat对象传给a
//giveShot这个方法可以取用任何一种Animal,只要传入的是Animal的子类他都能执行
  a.makeNoise
}
}
a参数可以用任何Animal的类型对象来当传入。执行到makeNoise()的时候,不管它引用的对象到底是个什么,
该对象都会执行重写的makeNoise()方法
class PetOwner{
Wolf w = new Wolf();
Dog d = new Dog();
Cat c = new Cat();
w.giveshot(d);//会执行dog的makeNoise方法
d.giveshot(c);//会执行cat的makeNoise方法



}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值