现实中的汽车是一个类,在该类中描述了汽车的普遍属性和行为,如由动力驱动,具有4 个或4 个以上车轮的非轨道承载的车辆。我们可以再进一步将汽车分成乘用车(俗称的轿车)、商用车。显然,乘用车、商用车都继承了汽车的特性:由动力驱动、4 个以上车轮,但也具有自己的特性,如乘用车主要用于载运乘客及其随身物品,包括驾驶员座位在内最多不超过9 个座位,而商用车则主要用于运送人员和货物。图4.1 表示了汽车的继承关系。
图4.1 汽车的继承关系
一般首先定义反映事物共同性质的类,然后在其基础上派生出反映特殊事物的类,这就是继承。继承分为单继承(一个类只有一个父类)和多重继承(一个类有多个父类)。Java 只支持单继承,即Java 中的一个类能继承于另一个类。我们将被继承的类称之为父类(基类或者超类),继承类称之为子类(派生类)。汽车是乘用车、商用车的基类,而乘用车、商用车则是汽车的子类。
Java 里没有多继承,一个类只能有一个父类。在Java 中用关键字extends 来实现单继承,语法格式如下:
实现继承,有一定的条件限制。实现继承关系的类要有必然的联系,比如一个Dog(狗类)不能继承自一个Cat(猫类),当然它们可以继承自Animal(动物类)。
一个公司内有经理和员工。可以抽象出类Manager(经理)和类Employee(员工),代码如下:
(www.daowen.com)
通过分析得知,在类Employee 和类Manager 中存在许多共同的属性和行为,在现实生活中,Manager 是公司Employee 之一,因此,可以将Manager 类定义Employee类的子类,修改类Manager 如下:
继承的好处有如下几点:
➢ 减少代码冗余。
➢ 使维护变得简单。
➢ 更容易扩展。
构造方法不能被继承。一个类得到构造方法只有两种途径:自定义构造方法;使用JVM分配的缺省构造方法。可以在子类中访问父类的构造方法。
在面向对象分析时,选择继承关系需要注意一个原则:任何子类适用的地方,父类都适用。如果两个类可以这样替换,就说明两个类有继承关系,也就是“is a”。如果A类和B 类满足“A is a B”,那么就说A 类是B 类的子类。如果不适用这个原则,就不要使用继承关系。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。