继承的引入
类的继承又称类的派生。通常,将被继承的类称为父类或超类,派生出来的类称为子类。从一个父类可以派生出多个之类,子类还可以派生出新的子类,这样就形成了类的层次关系。
在java中,一个类只能继承一个超类,称为单继承。但一个超类(父类)却可以派生出多个子类,每个子类作为超类(父类)又可以派生出多个子类,从而形成具有树形结构的类的层次体系。位于树中较高层次的类称为祖先类,位于较低层次的类称为后代类,父类也称为直接祖先类。
java提供一个最顶层的根类Object(java.lang.Object),它是所有类的祖先类。在Object类中定义了所有对象都具有的基本状态和行为,如定义了比较两个对象的方法equals()等。在定义类的时候,即使没有指定父类,java也会自动将其定义为Object的子类。
子类的定义和使用
1.子类定义的格式
在java中,用extends关键字创建一个子类,其语法如下:
【修饰符】 class 子类名 extends 父类名 {
成员属性的定义;
成员方法的定义;
}
其中,修饰符用来说明类的访问权限(如public等)、是否抽象(abstract)等。注意继承的父类只能有一个。例如,从类A派生出类B的定义如下:
public class A
{
int x;
void fx(){ }
}
public class B extends A
{
int y;
void fy()
{
fx();
}
}
其中类A是超类(父类),类B是子类。由于类B继承了类A,则类B自然拥有类A的成员变量和成员方法,所以在类B中的fy()方法中可以直接调用类A中的fx()方法。
注意:在java中,继承只能是单继承,也就是说一个子类只能有一个父类。不能写成class A extends B,C,D{ }。
2.父类成员变量的访问权限
子类可以继承父类中的成员属性和除了构造方法以外的成员方法,但不能继承父类的构造方法。而且,并不是对父类的所有成员属性和成员方法都具有访问权限。
3.子类成员的继承
继承的目的是为了扩展父类,满足需要并增强类的功能。如果子
其和父类样,使得继承毫无意义。因此,子类中通常需 但由于其成员子类中加入自己的变量和方法,所以从类成员的多少来看,子类比其父类大。
增加,约束条件增多,变得更具特殊性。因此,健求的真正目的是给定义的子类资加边线或者将其从父类继承来的某些功能进行修改和补充。