Java可以定义这样的一个类:这个类不能创建对象。它的目的只是表示一个想法或是一个框架,提供给其他类的对象共用。这样的类称为抽象类。
语法
在类声明中需要使用abstract关键字来声明一个抽象类。
例如,下面的代码声明一个Shape的抽象类:
public abstract class Shape {
}
下面的代码为Shape类添加了一个draw()方法。
public abstract class Shape {
public Shape() {
}
public abstract void draw();
}
抽象类不一定要求它具有至少一个抽象方法。如果一个类有一个被声明或继承的抽象方法,它必须被声明为抽象类。抽象方法的声明方式与任何其他方法相同,只是在方法的最后加上分号表示,并且不会有任何执行代码语句。
示例
下面的Shape类有抽象和非抽象方法。
abstract class Shape {
private String name;
public Shape() {
this.name = "Unknown shape";
}
public Shape(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
// 带有分号,表示为抽象方法
public abstract void draw();
public abstract double getArea();
public abstract double getPerimeter();
}
下面的代码展示了如何创建一个Rectangle类,它继承自Shape类。
class Rectangle extends Shape {
private double width;
private double height;
public Rectangle(double width, double height) {
// Set the shape name as "Rectangle"
super("Rectangle");
this.width = width;
this.height = height;
}
// Provide an implementation for inherited abstract draw() method
public void draw() {
System.out.println("Drawing a rectangle...");
}
// Provide an implementation for inherited abstract getArea() method
public double getArea() {
return width * height;
}
// Provide an implementation for inherited abstract getPerimeter() method
public double getPerimeter() {
return 2.0 * (width + height);
}
}
这个 Rectangle类要实现父类Shape类中的所有抽象方法,否则会有错误出现。
¥ 我要打赏
纠错/补充
收藏
加QQ群啦,易百教程官方技术学习群
注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。