abstract class Shape { // 勾画shape public abstract void draw(); // 擦去 shape public abstract void erase();
public String name; public Shape(String aName) { name = aName; } }
1.b 定义 Shape的两个子类: Circle, Square,实现Shape中定义的抽象方法
// 圆形子类 class Circle extends Shape { public void draw() { System.out.println("It will draw a circle."); } public void erase() { System.out.println("It will erase a circle."); } // 构造函数 public Circle(String aName) { super(aName); } }
// 方形子类 class Square extends Shape { public void draw() { System.out.println("It will draw a square."); } public void erase() { System.out.println("It will erase a square."); } // 构造函数 public Square(String aName) { super(aName); } }
class Main { public static void main(String[] args) { ShapeFactory sf1 = new SquareFactory(); ShapeFactory sf2 = new CircleFactory(); sf1.anOperation("Shape one"); sf2.anOperation("Shape two"); } }
运行结果如下:
The current shape is: Shape one (created by SquareFactory) It will draw a square. It will erase a square. The current shape is: Shape two (created by CircleFactory) It will draw a circle. It will erase a circle.