DAY 08
继承
概述
面向对象的三大特征:封装、继承、多态
继承是多态的前提,如果没有继承就没有多态
继承是一种师徒关系,师父会多少武功,大徒弟也会,小徒弟也会。
讲师类、助教类虽然有不同的成员方法,一个讲课,一个辅导,但是都有姓名和工号的成员变量,具备一定共性,继承就是为了解决这个问题。
继承主要解决的问题就是共性抽取问题。
创建一个更抽象的员工类,只有成员变量姓名和工号,这样员工类就是父类,讲师类和助教类就是子类。
子类可以具备自己特有的内容,比如讲课的方法,辅导的方法。
继承的格式
在继承的关系中,“子类就是一个父类”。也就是说,子类可以被当成父类来看待。
例如,父类是一个员工,子类是讲师,那么“讲师就是一个员工”。关系:is-a。
定义一个父类的格式:(一个普通的类定义)
子类:子类名称 extends 父类名称
成员变量访问特点
- 子知父,父不知子
- 就近原则
继承的好处与弊端
- 复用性
- 维护性
继承弊端:继承让类与类之间产生了关系,类的耦合性增强了,当父类发生变化时子类实现也不得不跟踪者变化,削弱了自列的独立性。
什么时候用继承呢? - 继承体现的关系:is a 白马非马
- 假设法:我有两个类A和B,如果他们满足A是B的一种,或者B是A的一种,就说明他们存在继承关系,这个时候就可以考虑使用继承来提现,否则就不滥用继承。
- 举例:苹果和水果,猫和动物,猫和狗(不行)
super关键字
- 局部变量 直接调用
- 本类成员变量 this调用
- 父类成员变量 super调用
重写Override覆盖
方法名称相同,参数列表也相同
对于已经投入使用的类,尽量不要修改,推荐定义一个新类,来重复利用其中的共性内容,并且添加修改新内容构造方法的访问特点
继承关系中,父子类构造方法的访问特点super关键字的用法有三种
this的三种用法
super和this图解
java继承特点
- 单继承
- 多级继承
- 龙生九子,子子不同
抽象
抽象的概念
如果父类当中的方法不确定如何进行方法体实现,那么就是一个抽象方法
抽象方法:加上abstract关键字,然后去掉大括号,直接分号结束
抽象类:抽象方法所在类,必须是抽象类才行。在class之前写上abstract即可如何使用抽象类和抽象方法
1.不能直接创建new抽象类对象
2.必须用一个子类来继承抽象类
3.子类必须覆盖重写抽象方法当中的所有抽象方法。
覆盖重写(实现):子类去掉抽象方法的abstract关键字,然后补上方法体大括号
4.创建子类进行使用
##发红包的例子