Java面向对象设计 - Java抽象类和方法
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; } // Abstract methods 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); } }