上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
2.2.2 类继承的实现
Java中的继承是通过extends关键字来实现的,在定义新类时使用extends关键字指明该类的父类,这样就在两个类之间建立了继承关系。
1.子类声明
[修饰符] class 子类名 extends 父类名 { // 类头的定义 成员变量声明; // 类体的定义 成员方法定义; }
一般在类声明中,加入extends子句来创建一个类的子类,extends后即为父类名。若父类名又是某个类的子类,则新定义的类也是其父类的父类的(间接)子类,其层次不限。若无extends子句,则该类为java.lang.Object的子类。
2.类继承的传递性
类继承具有传递性,即子类继承父类的所有非私有成员,也继承父类的父类直至祖先所有的非私有成员。继承是传递的,这正体现了大自然中特殊与一般的关系。
【例2-5】 设计一个长方体类Cube,它继承自矩形类Rectangle,它除了有矩形类的长、宽属性和计算面积的方法外,还有表示长方体高的成员变量height以及计算长方体体积的方法volume()。
// 矩形类 class Rectangle { double length; // 长 double width; // 宽 double area(){ // 求长方形的面积 return length * width; } void setDim(double w,double l){ // 设置长方形的长和宽 width = w; length = l; } } // 长方体类,继承于Rectangle类 class Cube extends Rectangle { double height; // 高 public Cube(double width,double length,double height){// 构造方法 this.width=width; this.length=length; this.height = height; } double volume(){ // 求长方体的体积 return area()*height; } } //主类(拥有main方法的类) public class Test { public static void main(String[] args) { Cube c = new Cube(1, 2, 3); System.out.println("长: " + c.length + "\t宽: " + c.width + "\t高: "+ c.height); System.out.println("长方体的体积: " + c.volume()); } }
该程序的运行结果如下:
长:2.0 宽:1.0 高:3.0 长方体的体积: 6.0
从这个例子可以看出,子类没有再写计算面积的方法,但是却可以直接使用该方法,因为子类从父类将该方法继承了下来。