一、继承
子类继承父类的
属性
和
行为
,使得子类对象具有与父类相同的属性、相同的行为。子类可以直接访问父类中的非私有
的属性和行为。提高了代码的复用性,继承是多态的前提。
![](https://i-blog.csdnimg.cn/blog_migrate/9f36a9f18ee3dcd0cf2dd1d62152713f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7f800da1e4a4c2b7ca9b9420c557634c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c7a75af2aa1b5b2f025ed5768ee0d650.png)
成员变量重名:子父类中出现了同名的成员变量时,在子类中需要访问父类中非私有成员变量时,需要使用
super
关键字,修饰父类成员变量
成员方法重名:方法重写。
子类中出现与父类一模一样的方法时(返回值类型,方法名和参数列表都相同)且子类权限大于父类权限,会出现覆盖效
果,也称为重写或者复写。
声明不变,重新实现
构造方法:
1.
构造方法的名字是与类名一致的。所以子类是无法继承父类构造方法的。
2.
构造方法的作用是初始化成员变量的。所以子类的初始化过程中,必须先执行父类的初始化动作(父类空间优于子类对象产生)。
![](https://i-blog.csdnimg.cn/blog_migrate/639c660efae279fe7c164739a20b8308.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b9ce7fca512f8583123092f5b42229d6.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a2897cdde4967b9917ec6965a71cd0e6.png)
继承的特点:
1.Java支持单继承,不支持多继承(父类唯一),支持多重继承
2.使用 implements 关键字可以变相的使java具有多继承的特性,使用范围为类继承接口的情况,可以同时继承多个接口(接口跟接口之间采用逗号分隔)。
![](https://i-blog.csdnimg.cn/blog_migrate/886c9e624ea91ffbc93df62bd0efde64.png)
3.final 关键字声明类可以把类定义为不能继承的,即最终类;或者用于修饰方法,该方法不能被子类重写。
二、抽象类
抽象方法
: 没有方法主体的方法。
抽象类
:包含抽象方法的类(抽象类不能创建对象)。
继承抽象类的子类
必须重写父类所有的抽象方法
。否则,该子类也必须声明为抽象类。最终,必须有子类实现该父类的抽象方法,否则,从最初的父类到最终的子类都不能创建对象,失去意义。
![](https://i-blog.csdnimg.cn/blog_migrate/385bb8469a9a607c065ca163d7a55206.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f2251c319ff57582b6849aa0cc671014.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d35a538a0c33ec47a5adb252fbba1522.png)
注意事项:
1.
抽象类不能创建对象(如果创建,编译无法通过而报错),
只能创建其非抽象子类的对象。
2.
抽象类中,可以有构造方法,供子类创建对象时初始化父类成员使用。
3.
抽象类不一定包含抽象方法,但是有抽象方法的类必定是抽象类。
4.
抽象类的非抽象子类,必须重写抽象父类中
所有的
抽象方法,否则,编译无法通过而报错
。
参考:黑马程序员Java教程