继承
概念
子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
如果在父类中拥有私有属性(private修饰),则子类是不能被继承的。
标记: 红色, 红色
特点
- 子类会把父类的方法继承下来
- 如果父类中包含了某些类中的共同属性和行为,可以选择继承来设计程序
- 子类使用extends来继承父类的共同属性,同时子类可以有自己的属性or方法
- 父类更通用,子类更加具体
- 子类只可以获得父类中非private的属性,如果想要继承就需要提供公共的set和get方法,私有的无法继承。
- Java中只可以单继承:
即一个子类只允许有一个父类,但是可以实现多级继承,及子类拥有唯一的父类,而父类还可以再继承。
使用
在父子类关系继承中,如果成员变量重名,则创建子类对象时,访问有两种方式
- 直接通过子类对象访问成员变量
- 等号左边是谁,就优先使用谁,如果没有就向上找。
- 间接通过成员方法访问成员变量 ====>>>>该方法属于谁,谁就优先使用,如果没有就向上找。
- 在继承关系中,关于成员变量的使用
(1) 局部成员变量:直接使用
(2)本类成员变量:this.成员变量
this&super
-
this
访问本类的成员变量,成员方法和构造方法
-
super
父类成员变量:super.父类成员变量
访问父类的成员变量,成员方法和构造方法
多态
注意:在多态中,编译看左边,运行看右边
概念
同一个行为具有多个不同表现形式或形态的能力
特点
- 消除类型之间的耦合关系,实现低耦合
- 具有灵活性,可扩充性,可替换性
体现形式
-
继承
父类可以是抽象类,也可以是普通类
父类引用指向子类调用复写这个方法的时候,调用的是子类的方法
-
重写
-
引用
向上转型
- 格式:父类名称 对象名 = new 子类名称();
- 含义:右侧创建一个子类对象,把它当作父类来使用。
- 向上转型一定是安全的,从小范围到大范围。
但是一旦向上转型,子类中原本特有的方法就不能再被调用了。
向下转型
如果调用父类中没有的方法,则要向下转型
- 格式:子类名称 对象名 = (子类名称)父类对象
- 含义:将父类对象,【还原】为本来的子类对象
- 必须保证对象本来创建的时候是子类,向下转型仍为子类,本来不是子类,向下转型会报错
重写&重载
重写
概念
是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!
规则
- 参数列表必须与被重写方法相同。
- 访问权限不能比父类中被重写的方法的访问权限更低(public>protected>(default)>private)
- 父类成员的方法只能被它的子类重写。
重载
概念
是在一个类里面,方法名字相同,而参数不同。
常用:构建器的重载
无论是成员变量还是成员方法,如果没有都是向上父类中查找,绝对不会向下查找子类的。
注意:在多态中,编译看左边,运行看右边
自制思维导图
参考学习
我觉得老师和博主都讲得很好,尤其是代码非常好理解,大家可以参考一下,并使用思维导图理清一下思路~
欢迎大家关注我的公众号——生信StudyAccount