打开网易新闻 查看精彩图片

继承是所有OOP语言和Java语言不可缺少的组成部分。当创建一个类时,一定会继承其他的类,即使自己没有定义继承任何父类,Java语言也会隐式继承Java的标准根基类Object。既然继承这么重要,下面就详细介绍一下继承吧!
1、继承的概述

继承的格式

格式:public class 子类名 extends 父类名{}

范例:public class Son extends Father{}

Father:是父类,也被称为基类、超类

Son:是子类,也被称为派生类

继承中子类的特点

子类可以有父类的内容

子类还可以有自己的内容

比如定义一个Farher类,再定义一个Son类继承Father的姓氏和方法。请看下面的代码:

打开网易新闻 查看精彩图片

子类Son继承了父类Father的name和showFather方法,运行结果:

打开网易新闻 查看精彩图片

2、继承的好处和弊端

继承好处:

提高了代码的复用性(多个类相同的成员可以放在同一个类中)

提高了代码的维护性(如果方法的代码需要修改,修改一处即可)

继承弊端

继承让类与类之间产生了关系,类的耦合性增强了,当父类发生变化时,子类也不得不发生变化,削弱了子类的独立性。

什么时候使用继承?

继承体现的关系:is a

假设法:有两个类A和B,如果这两个类之间满足A是B的一种,或者B是A的一种,就说明他们之间存在继承关系,这个时候就可以考虑继承来体现,否则就不能滥用继承。

举例:苹果和水果(继承)、动物和猫(继承)、狗和猫(非继承)

3、继承中变量的访问特点

在子类方法中访问一个变量

  • 子类局部范围查找
  • 子类成员范围查找
  • 父类成员范围查找

请看下面的案例:

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片

4、super关键字

super关键字的用法和this关键字的用法类似

this代表本类对象的引用

super代表父类存储空间的标识(可以理解为父类对象引用)

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片

5、基础中构造方法的访问特点

子类中所有的构造方法默认都会父类中无参的构造方法

子类会继承父类的数据,可能还会使用父类的数据。所以,子类初始化之前,一定要先完成父类的初始化。

每一个子类构造方法的第一条语句默认都是:super()

如果父类中没有无参构造方法,只有带参构造方法,该怎么办?

通过使用super关键字去显示地调用父类的带参构造方法

只能在子类构造函数中显示调用父类构造函数,而且必须在子类构造函数第一行代码中显示调用

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片

程序运行结果:

打开网易新闻 查看精彩图片

6、方法重写

方法重写概述

  • 子类中出现了和父类中一模一样的方法声明
  • 子类修改来自父类继承的方法

例如:子类和父类都有showAge()方法时,子类就重写了父类的showAge()方法

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片