当我们准备编写一个类的时候,发现某个类有我们所需要的成员变量和方法,如果我们想复用这个类中的成员变量和方法,即在所编写的类中不用声明成员变量和定义方法,就相当于有了这个成员变量和方法,那么我们可以将编写的类定义为这个类的子类。
而继承就是一种由已有的类创建新类的机制,利用继承,我们可以先定义一个共有属性的一般类,根据该一般类再定义具有特殊属性的子类,子类继承一般类的属性和行为,并根据需要增加它自己的新的属性和行为。由继承而得到的类称为子类,被继承的类称为父类(超类)。
注意:
Java不支持多重继承,即子类只能有一个父类,人们习惯地称子类与父类的关系是“is-a”关系。
在类的声明中,通过使用关键字extends来定义一个类的子类,一般格式为:
class 子类名 extends 父类名 { … }
例如:
class Student extends People { … }
把Student类定义为People类的子类,People类是Student类的父类(超类)。
类的树形结构:
如果C是B的子类,B又是A的子类,习惯上称C是A的子孙类。Java的类按继承关系形成树形结构(将类看做树上的结点),在这个树形结构中,根结点是Object类(Object是java.lang包中的类),即Object是所有类的祖先类。任何类都是Object类的子孙类,每个类(除了Object类)有且仅有一个父类,一个类可以有多个或零个子类。
注意:
如果一个类(除了Object类)的声明中没有使用extends关键字,这个类被系统默认为是Object的子类。例如:类声明“class A”与“class A extends Object”是等同的。
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程