继承的作用是什么?看看下面这些例子吧!

114 阅读2分钟

继承是面向对象编程技术的一块基石,因为它允许创建分等级层次的类。运用继承,你能够创建一个通用类,它定义了一系列相关项目的一般特性。

让我们看一个更实际的例子,该例子有助于阐述继承的作用。这样,新的类将包含一个盒子的宽度、高度、深度和重量。

// This program uses inheritance to extend Box. 
class Box { 
 double width; 
 double height; 
 double depth; 
 // construct clone of an object 
 Box(Box ob) { // pass object to constructor 
 width = ob.width; 
 height = ob.height; 
 depth = ob.depth; 
 } 
 // constructor used when all dimensions specified 
 Box(double w, double h, double d) { 
 width = w; 
 height = h; 
 depth = d; 
 } 
 // constructor used when no dimensions specified 
 Box() { 
 width = -1; // use -1 to indicate 
 height = -1; // an uninitialized 
 depth = -1; // box 
 } 
 // constructor used when cube is created 
 Box(double len) { 
 width = height = depth = len; 
 } 
 // compute and return volume 
 double volume() { 
 return width * height * depth; 
 } 
} 
// Here, Box is extended to include weight. 
class BoxWeight extends Box { 
 double weight; // weight of box 
 // constructor for BoxWeight 
 BoxWeight(double w, double h, double d, double m) { 
 width = w; 
 height = h; 
 depth = d; 
 weight = m; 
 } 
} 
class DemoBoxWeight { 
 public static void main(String args[]) { 
 BoxWeight mybox1 = new BoxWeight(10, 20, 15, 34.3); 
 BoxWeight mybox2 = new BoxWeight(2, 3, 4, 0.076); 
 double vol; 
 vol = mybox1.volume(); 
 System.out.println("Volume of mybox1 is " + vol); 
 System.out.println("Weight of mybox1 is " + mybox1.weight); 
 System.out.println(); 
 vol = mybox2.volume(); 
 System.out.println("Volume of mybox2 is " + vol); 
 System.out.println("Weight of mybox2 is " + mybox2.weight); 
 } 
} 

该程序的输出显示如下:

Volume of mybox1 is 3000.0 
Weight of mybox1 is 34.3 
Volume of mybox2 is 24.0 
Weight of mybox2 is 0.076

BoxWeight继承了Box的所有特征并为自己增添了一个weight成员。没有必要让BoxWeight重新创建Box中的所有特征。为满足需要我们只要扩展Box就可以了。

继承的一个主要优势在于一旦你已经创建了一个超类,而该超类定义了适用于一组对象的属性,它可用来创建任何数量的说明更多细节的子类。每一个子类能够正好制作它自己的分类。例如,下面的类继承了Box并增加了一个颜色属性:

// Here, Box is extended to include color. 
class ColorBox extends Box { 
 int color; // color of box 
 ColorBox(double w, double h, double d, int c) { 
 width = w; 
 height = h; 
 depth = d; 
 color = c; 
 } 
}

记住,一旦你已经创建了一个定义了对象一般属性的超类,该超类可以被继承以生成特殊用途的类。每一个子类只增添它自己独特的属性。这是继承的本质。