当我们准备编写一个类的时候,发现某个类有我们所需要的成员变量和方法,如果我们想复用这个类中的成员变量和方法,即在所编写的类中不用声明成员变量和定义方法,就相当于有了这个成员变量和方法,那么我们可以将编写的类定义为这个类的子类。
而继承就是一种由已有的类创建新类的机制,利用继承,我们可以先定义一个共有属性的一般类,根据该一般类再定义具有特殊属性的子类,子类继承一般类的属性和行为,并根据需要增加它自己的新的属性和行为。由继承而得到的类称为子类,被继承的类称为父类(超类)。
注意:
Java不支持多重继承,即子类只能有一个父类,人们习惯地称子类与父类的关系是“is-a”关系。
在类的声明中,通过使用关键字extends来定义一个类的子类,一般格式为:
class子类名extends父类名{…}
例如:
classStudentextendsPeople{…}
把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”是等同的。