Loading... <div class="tip inlineBlock success"> 继承主要解决的问题就是:<span style='color:#A52A2A'>共性抽取</span> </div> # 定义 子类使用 `extends` 关键字继承父类的属性和行为,使子类对象具有与父类相同的属性和行为。子类可以直接访问父类中非私有的属性和行为。如果要访问父类的私有成员变量,则需要使用对应的getXxx和setXxx方法。 # 优点 1. 提高代码的复用性; 2. 类与类之间产生了关系,是多态的前提。 # 格式 ```java has-numbering class 父类 { // } class 子类 extends 父类 { // } ``` # 继承的特点 1. Java只支持单继承,不支持多继承; 2. Java支持多层继承(继承体系); 3. 子类和父类是一种相对的概念。 一个子类只有一个直接父类,但一个父类可以有多个子类。 ## 成员变量 * 成员变量不重名 直接访问,没有影响。 * 成员变量重名 1. 直接通过子类对象访问成员变量 * 等号左边是谁,就优先使用谁,没有则向上找 2. 间接通过成员方法访问成员变量 * 该方法属于谁,就优先用谁,没有则向上找 3. 使用 `super` 关键字访问父类成员变量 * 局部变量:直接写变量名 * 本类成员变量:this.变量名 * 父类成员变量:super.变量名 ## 成员方法 * 成员方法不重名 直接调用,没有影响。 * 成员方法重名 * [方法重写Override](https://blog.fivk.cn/archives/810.html) 创建(new)的对象是谁,就用谁的方法。如果没有,则向上找父类。 【注意】 无论是成员变量还是成员方法,如果没有,都是向上找父类,不会向下找子类。 ## 构造方法 1. 子类无法继承父类的构造; 2. 构造方法的作用是初始化成员变量。所以在子类的初始化过程中,必须先执行父类的初始化动作; 3. 子类构造方法中默认的super()调用父类的无参构造; 4. 可以使用super关键字,子类构造调用父类的重载构造; 5. super父类构造的调用,必须是子类构造方法的第一个语句。只有子类构造才能调用父类构造。 ## super和this super:代表父类的存储空间标识(父类引用) this:当前对象的应用 * super关键字的3中用法 1. 在子类成员方法中,调用父类的成员方法; 2. 在子类成员方法中,调用父类成员变量; 3. 在子类构造方法中,调用父类构造方法。 * this关键字的3中用法 4. 在本类成员方法中,调用本类成员变量; 4. 在本类成员方法中,调用本类的另一个成员方法; 4. 在本类构造方法中,访问本类的另一个构造方法。 【注意】 1. this(…)调用必须是构造方法的第一个语句; 2. super和this两种构造调用不能同时使用。 > 感谢小伙伴们的关注! > 你的点赞、评论、关注、收藏是对博主的最大鼓励! > 持续更新JavaSE学习笔记!欢迎订阅专栏! 最后修改:2021 年 10 月 07 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏