继承的概念理解:
- 继承是面向对象的三大特征之一(封装继承多态)
- 可以使子类具有父类的属性和方法,还可以在子类中重新定义
- 子类可以使用父类的非私有成员
继承的好处与弊端
继承的好处:
- 提高了代码的额复用性
- 提高了代码的维护性
继承的弊端:
- 继承让类与类之间的耦合性增强,父类发生变化时子类实现也不得不跟着变化削弱了子类的独立性。
java中只支持单继承不支持多继承
子父类中出现同名的成员变量问题:
在子类中访问一个变量采用的是就近原则:
- 如果调用一个方法优先使用方法内同名变量
- 方法内没有则调用子类中的成员变量
- 子类中没有则使用父类中的成员变量
- 如果子类中含有父类中也含有并且向同时使用,则父类需要使用super关键字进行区分
this和super关键字:
关于方法重写:
父类中的私有静态不能被重写,重写后的方法权限要大于等于父类的方法权限
四种权限修饰符:
口诀:p空pp分别对应:类包子全
继承中构造方法的访问特点:
- 首先要知道构造方法是用于类的初始化的
- 子类中所有的构造方法默认都会访问父类的无参构造
子类在初始化的时候有可能会用到父类中的数据,如果父类没有完成初始化,子类将无法使用父类中的数据
所以子类初始化之前一定要先完成父类的初始化
- 每一个子类的构造方法的第一条默认语句都是:super();(就算不写JVM虚拟机在编译时也会自动添加)
- 如果父类中没有空参构造方法,只有带参构造那么子类只能手动添加duper();带参。
(注意:this(...)super(...)必须放在构造方法的第一条有效语句,并且二者不能共存
继承子父类的内存关系图解:
子类对象在堆内存中会单独存在一块super区域,用来存放父亲的数据:
以上就是继承的大概知识点~