抽象类
来源:互联网 发布:朝鲜核试验 知乎 编辑:程序博客网 时间:2024/05/16 14:13
在继承的层次结构中,随着每个新子类的出现,类会变得越来越明确和具体。如果从一个子类追溯到父类,类就会变得更通用、更加不明确。类的设计应该确保父类包含它的子类的共同特征。有时候,一个父类设计得非常抽象,以至于它都没有任何具体的实例。这样的类称为抽象类。
把一个GeometricObject类定义成Circle类和Rectangle类的父类。GeometricObject类模拟了几何对象的共同特征。Circle类和Rectangle类都包含分别计算圆和矩形的面积和周长的方法getArea()和getDiameter()。因为可以计算所有几何对象的面积和周长,所以最好在GeometricObject类中定义getArea()和getDiameter()方法。但是,这些方法不能在GeometricObject类中实现,因为它们的实现取决于几何对象的具体类型。这样的方法称为抽象方法,在方法头中使用abstract修饰符表示。在GeometricObject类中定义了这些方法后,GeometricObject就成为一个抽象类。在类头使用abstract表示该类为抽象类。例如下面源代码:
public abstract class GrometricObject { private String color = "white"; private boolean filled; private java.util.Date dateCreated; protected GrometricObject() { dateCreated = new jva.util.Date(); } protected GeometricObject(String color, boolean filled) { dateCreated = new java.util.Date(); this.color = color; this .filled = filled; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } public boolean isFilled() { return filled; } public void setFilled(boolean filled) { this.filled = filled; } public java.util.Date getDateCreated() { return dateCreated; } public String toString() { return "created on " + dateCreated + "\ncolor: " + color + "and filled: " + filled; public abstract double getArea(); public abstract double getPerimeter();}
抽象类和常规类很像,但是不能使用new操作符创建它的实例。抽象方法只有定义而没有实现。它的实现由子类提供。一个包含抽象方法的类必须声明为抽象类。
抽象类的构造方法定义为protected,因为它只被子类使用。创建一个具体子类的实例时,它的父类 的构造方法被调用以初始化父类中定义的数据域。
抽象类GeometricObject为几何对象定义了共同特征(数据和方法),并且提供了正确的构造方法。因为不知道如何计算几何对象的面积和周长,所以,getArea和getDiameter定义为抽象方法。这些方法在子类中实现。
- 抽象类 抽象函数
- 抽象类、抽象方法
- 抽象类抽象方法
- 抽象类,抽象方法
- 抽象类,抽象方法
- 抽象方法,抽象类
- 抽象类、抽象方法
- 抽象类、抽象字段、抽象方法
- 抽象类、抽象方法、抽象属性
- 13.抽象类、抽象字段、抽象方法
- 抽象类
- 抽象类
- 抽象类
- 抽象类
- 抽象类
- 抽象类
- 抽象类
- 抽象类
- 动态绑定
- 对象转换和instanceof运算符
- android : emulater命令详解
- 数组线性表ArrayList
- protected数据和方法
- 抽象类
- 为什么要用抽象方法
- 关于抽象类的几个关注点
- 算法分析
- 统一建模语言(UML)
- 线性表(用数组存储数据)
- 何时使用异常
- VIM命令
- tomcat下载文件时,URL含有文字参数与空格参数出错(java.io.FileNotFoundException错误) 解决方法(转)