1.1 继承的概念
1.1.1 继承的概述 is-a
继承是面向对象的核心特性,是面向对象的学习重点。
继承是代码复用的重要方式,是类与类之间的一种关系。
从类与类之间的设计关系来看,子类必须属于父类的一种时,才会继承。
父类抽取出了共性的内容,子类可以在父类基础上扩展新的属性与行为。
子类拥有父类的所有属性与方法,无需重新定义。并且可以直接使用非私有的父类成员。
例展示d系
1.2 继承的代码格式
1.2.1 继承格式说明
使用extends关键字完成继承关系。
格式:
class 子类 extends 父类 { }
注意:所有的类都直接或间接继承自Object,所以如果没有继承其他类,则默认继承Object类。即Object是所有类的父类(或超类)
1.3 子类通过get&set方法访问父类成员变量
当父类的成员变量用private修饰后,子类无法访问父类的成员变量,但是如果父类提供了public修饰的get/set方法,则子类可以通过get/set方法,正常访问父类的成员变量。
1.4 继承的特点
1.4.1 特点概述
Java支持单继承
Java支持多层继承
父类定义了继承树中共性内容,子类定义了该类个性内容。
在结合多态后,能使用父类时尽量使用父类,提高程序扩展性。
第2章 方法重写及继承内存图解
2.1 方法重写的概念与格式
2.1.1 方法重写的概述
当子类继承父类后,拥有了父类的成员并可以直接调用父类非私有方法。如果子类认为父类提供的方法不够强大,子类可以按照子类自身的逻辑重新定义继承过来的父类方法,这个重新定义父类方法的过程叫做方法重写。
方法重写后,调用该方法时不再调用父类的方法,而调用子类重写后的方法。
举例:
当描述一个人类(父类)时,它具有吃饭,睡觉等功能
中国人类(子类)吃饭比较复杂,使用筷子吃饭,则可以继承原有的人类。并重写吃饭功能,在其中修改为更为复杂的用筷子吃的逻辑即可。
(注:在学习完多态和抽象类后我们会对方法重写有更深的理解)
2.2 Override注解解释
2.2.1 Override
子类重写父类的方法时在方法上添加 @Override注解,表示该方法是子类重写父类中的方法。
2.3 方法重写注意事项
2.3.1 注意事项概述
发生在继承关系中
方法名称必须相同
参数列表必须相同
访问权限相同或子类方法访问权限更大(访问权限顺序public>默认)
返回值为一般必须相同(并不适用于所有情况)
子类抛出异常比父类小
2.4 继承后子父类构造方法调用先后顺序
2.4.1 继承中子父类构造调用顺序概述
在每次创建子类对象时,我们均会先初始化父类内容,再初始化其子类本身内容。目的在于子类对象中包含了其对应的父类存储空间,便可以包含了其父类的成员,如果父类成员非private修饰,则子类可以随意使用父类成员。
代码体现在子类的构造方法调用时,一定先调用父类的构造方法。
继承与重写总结
能否被继承,重写
是否能被继承?
1.成员变量、成员方法 可以继承
2.私有的属性 可以继承
3.静态的成员 不可以继承,静态成员是所有实例共享
4.构造方法 不可以继承
是否能进行方法重写?
1.成员变量不存在重写的问题
2.构造方法 不可以重写
3.静态方法 不可以重写
4.私有方法 不可以重写