继承与多态
一. 继承
1. 继承概述
继承是面向对象三大特色之一。能够使得子类具备父类的属性和办法,还能够在子类中从新定义,追加属性和办法。
继承的格局:public class 子类名 extends 父类名 {}
范例:public class Zi extends Fu {}
Fu:是父类,也称为基类、超类。
Zi:是子类,也称为派生类。
继承中子类的特点:
子类能够有父类的内容,子类还能够有本人特有的内容。
继承的益处:
进步了代码的复用性(多个类雷同的的成员能够放到同一个类中)
进步了代码的维护性(如果办法的代码须要批改,批改一处即可)
继承弊病:
继承让类与类之间产生了关系, 类的耦合性加强了,当类发生变化时子类实现也不得不跟着变动, 减弱了子类的独立性
什么时候应用继承?
●继承体现的关系: is a
●假如法: 我有两个类 A 和 B, 如果他们满足 A 是 B 的一种, 或者 B 是 A 的一种, 就阐明他们存在继承关系,这个时候就能够思考应用继承来体现,否则就不能滥用继承
●举例: 苹果和水果, 猫和动物,猫和狗
2.super 关键字
super 关键字的用法和 this 关键字的用法类似
this: 代表本类对象的援用
super: 代表父类存储空间的标识(能够了解为父类对象援用)
关键字 | 拜访成员变量 | 拜访构造方法 | 拜访成员办法 |
---|---|---|---|
this | this. 成员变量,拜访本类成员变量 | this(..),拜访本类构造方法 | this. 成员办法(..),拜访本类成员办法 |
super | super. 成员变量,拜访父类成员变量 | super(..),拜访父类构造方法 | super. 成员办法(..),拜访父类成员办法 |
3. 继承中构造方法的拜访特点
子类中所有的构造方法默认都会访父类中无参的构造方法
为什么呢?
●因为子类会继承父类中的数据, 可还会用父类的数据。所以,初始化之前,一 定要先实现父类数据的初始化
●每一个子类构造方法的第一语句默认都是: super()
如果父类中没有无参构造方法,只有带参构造方法,怎么办呢?
●通过应用 super 关键字去显示的调用父类的带参构造方法
●在父类中本人提供 一个无参构造方法
举荐: 本人给出无参构造方法
4. 办法重写
办法重写概述
●子类中呈现了和父类中截然不同的办法申明
办法重写的利用
●当子类须要父类的性能,而性能主体子类有本人特有内容时, 能够重写父类中的办法,这样,即因循了父类
的性能,又定义了子类特有的内容
●练习: 手机类和新手机类
@Override
●是一个注解(注解前面会学习到)
●能够帮忙咱们查看重写办法的办法申明的正确性
办法重写的注意事项:
公有办法不能被重写(父类公有成员子类是不能继承的)
子类办法拜访权限不能更低(public > 默认 > 公有)
5.Java 中继承的注意事项
Java 中类只反对单继承,不反对多继承。
例如:
public class Son extends Father,Mother{}
是谬误的。
Java 中类反对多层继承。