抽象类和接口对比
一、抽象类
提到抽象类我们需要先了解抽象方法的概念。
以图形类(Geometry类)为例,图形可以有多种类型像是矩形、三角形、圆形等等,所以从此看,图形这一概念便不是“具体”的,而是一个”抽象“的概念。而假如程序员想要使用getArea方法计算图形面积时,由于不确定图形具体是什么形状,求面积的计算方法也不一样,这便需要图形类的子类重写其getArea方法,而此方法在基类中(Java下)则需要加以abstract修饰符表明其需要在子类中重写。
//具体格式为此,getArea方法即为抽象方法
public abstract double getArea();
而包含抽象方法的基类则称为抽象类(必须加abstract声明)
public abstract class Geometry{
....
}
ps:
1、抽象类可以有0个普通方法,也可以有0个抽象方法(作为新派生类的基类)
2、无论怎样抽象类都不可以创建对象实例化
3、若抽象类的子类不是抽象类,那么子类必须重写所有父类中的抽象方法
至于抽象类的优势,下举一例
public abstract class GeometryObject{
double length;//设定图形属性(或半径或边长)
public abstract setLength(double length);
public abstract double getArea();
}
public class Circle extends GeometryObject{
public abstract void setLength(double length){
this.length = length;
}
public abstract void