当我们把Graph 类中的area修改为抽象方法时,Graph 类是会报错的,这是因为当把area方法修改为抽象方法时,也必须把类Graph修改为抽象类。
用关键字abstract修饰的类称为抽象类。抽象类的作用类似于“模板”,通常首先给出属性或方法的格式,然后根据这些格式来派生出新的子类,最后由其子类来创建对象。
定义抽象类的一般格式如下:
有关抽象类说明如下:
(1)抽象类只能声明对象,而不能创建具体对象即不能被实例化。
(2)在抽象类中,可以包含抽象方法,也可以包含非抽象方法,也可以不包含抽象方法。
(3)包含抽象方法的类一定是抽象类。
(4)如果一个类是某个抽象类的子类,那么该子类既可以抽象类,也可以是非抽象类。
(5)当抽象类的子类是非抽象类时,必须重写父类中所有的抽象方法。
下面我们用一个例子演示抽象类及其中的抽象方法。
【例4-7】 设计Vehicle抽象类表示运输工具,有移动(move)、加速(speed Up)、减速(slow Down)、停止(stop)方法。设计货车类Van和轿车Car类实现抽象类,并重写抽象类中所有的抽象方法。(www.xing528.com)
抽象类Vehicle的内容,代码如下:
第2行代码中的abstract关键字说明Vehicle类是一个抽象类,第3~6行代码定义了四个抽象方法。
货车类Van继承了抽象类Vehicle,代码如下:
第3~5 行代码重写了父类Vehicle中的move抽象方法,第6~8 行代码重写了父类Vehicle中的speed Up抽象方法,第9~11行代码重写了父类Vehicle中的slow Down抽象方法,第12~14行代码重写了父类Vehicle中的stop抽象方法。
轿车类Car也继承了抽象类Vehicle,代码如下:
Car类中也重写了父类Vehicle中的move抽象方法、speed Up抽象方法、slow Down抽象方法和stop抽象方法。
编写测试类AbsracteClass Test,代码如下:
上述代码的运行结果如下:
第4行和第9行是将子类的对象赋值给父类的引用变量,故父类的引用变量就变成了相应子类的上转型对象,第5~8行和第10~13行代码通过上转型对象调用子类中重写的方法。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。