欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Java——抽象类,

来源: javaer 分享于  点击 4762 次 点评:121

Java——抽象类,


抽象类

抽象类的作用类似C++的模版,用来表征对某一个方面的问题分析抽象出的一个概念模型。其目的是让设计者依据抽象类的格式来修改并创造出新的类。但是抽象类不能直接创建对象,只能通过抽象类派生出子类,通过子类创建对象。


抽象类的定义

定义一个Shape抽象类,包含计算周长和面积的方法

//定义shape抽象类
public abstract Shape{
    public abstract double area();
    public abstract double perimeter();
}

由此可以看出,定义抽象类的一般格式如下:

访问权限 abstract class 类名{
    数据成员;

    //抽象方法
    访问权限 abstract 返回值类型 类方法 (参数1,参数2...);

    //一般方法
    访问权限 返回值类型 类方法 (参数1,参数2...){
        方法体
    };
}

抽象类的几点说明:

抽象类的使用

定义抽象类的目的是提供给子类可共享的一般形式,子类可以根据自身需要扩展抽象类。

如下代码从抽象类Shape中派生子类Circle,并实现Shape类中的抽象方法:

//派生Shape子类Circle并实例化
public class Circle extends Shape {
    private double r;
    public Circle() {
        // TODO Auto-generated constructor stub
        r=0;
    }

    public Circle(double r) {
        super();
        this.r = r;
    }

    @Override
    public double area() {
        // TODO Auto-generated method stub
        return 3.14*this.r*this.r;
    }

    @Override
    public double perimeter() {
        // TODO Auto-generated method stub
        return 3.14*this.r*2;
    }

    public static void main(String[] args) {
        Shape c = new Circle(4);
        System.out.println("面积:"+c.area());
        System.out.println("周长:"+c.perimeter());
    }
}

执行结果如下:

面积:50.24
周长:25.12

当调用shape类型变量shape时,实际上调用了Circle类型对象的方法,这也是多态性的一种体现。

使用抽象类要注意

抽象类虽然具备类的形式,但由于其抽象性,不能定义抽象类的实例

//错误的示例
Shape shape = new Shape(3);

但可以定义一个抽象类的变量,让该变量引用其非抽象子类的对象间接实例一个抽象类:

//间接实例化抽象类
Shape shape;
shape = new Circle(5);
shape.area();

相关文章

    暂无相关文章
相关栏目:

用户点评