Java——抽象类,
分享于 点击 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();
相关文章
- 暂无相关文章
用户点评