AP计算机教程9-9:abstract class
如果你所编写的软件允许用户通过点击鼠标并拖放来绘制矩形和椭圆,你会需要什么class?
一种识别出所需class的方法是标示出所有的名词,这样我们就有了Rectangle
和Oval
两个可能的class。两者都是简单的形状,可以由两点所决定。因此你还可以创建class SimpleShape
来储存这两点以及绘制图形的颜色。
你能否实际创建一个SimpleShape
object?它会是怎样的?你又该如何绘制它?事实上因为我们并不知道SimpleShape
该是怎样,我们需要用abstract
来修饰它,意味着你并不能以此来创建任何object。我们可以这样定义SimpleShape
。
public abstract class SimpleShape
再次重申,无法用abstract class
来创建新object,否则会报错。运行以下例子看看。
public abstract class SimpleShape { public static void main(String[] args) { SimpleShape s = new SimpleShape(); } }
abstract class
的主要目的在于被child class继承
如果不能用来创建object,abstract class
有什么用呢?事实上abstract class
会是很不错的parent class。通常abstract class
有至少一个abstract
的method,有声明但没有具体实现。不过除此之外,正常class的元素,如构造函数,field和带实现的method也可以放在abstract class
中。abstract
method所在的class必须是abstract class
。
我们之前提到的class SimpleShape
可以有构造函数和field以存储定义形状的坐标点,以及用于计算宽和高的method。唯一需要定义为abstract
的method是draw
,因为SimpleShape
并不能直接被绘制在屏幕上。
当你希望把一些数据和行为包含的parent class中,但至少一个method需要被child class所重写,abstract class
会非常称手。SimpleShape
的每个child class可以定义自己draw
的行为。
0 条评论