Java面向对象软件开发
上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

从这个例子可以看出,子类没有再写计算面积的方法,但是却可以直接使用该方法,因为子类从父类将该方法继承了下来。