view plaincopy to clipboardPRint? package cn.edu.uibe.poly;
public class Shape { public void draw(){ System.out.println("Shape.draw()"); }
} package cn.edu.uibe.poly;
public class Shape { public void draw(){ System.out.println("Shape.draw()"); }
}
Rectangle類是Shape類的一個子類
view plaincopy to clipboardprint? package cn.edu.uibe.poly; public class Rectangle extends Shape { @Override public void draw() { System.out.println("畫矩形"); }
} package cn.edu.uibe.poly; public class Rectangle extends Shape { @Override public void draw() { System.out.println("畫矩形"); }
}
Circle類也是Shape類的子類
view plaincopy to clipboardprint? package cn.edu.uibe.poly; public class Circle extends Shape{ @Override public void draw() { System.out.println("畫圓"); } } package cn.edu.uibe.poly; public class Circle extends Shape{ @Override public void draw() { System.out.println("畫圓"); } }
Triangle類是Shape類的另外一個子類
view plaincopy to clipboardprint? package cn.edu.uibe.poly; public class Triangle extends Shape{ @Override public void draw() { System.out.println("畫三角形"); } } package cn.edu.uibe.poly; public class Triangle extends Shape{ @Override public void draw() { System.out.println("畫三角形"); } }
ShapeDemo類中隨機生成矩形、圓、三角形,然后用Shape類型的引用調用。
view plaincopy to clipboardprint? package cn.edu.uibe.poly; import java.util.*; public class ShapeDemo { Random rand = new Random(); public Shape createShape(){ int c = rand.nextInt(3); Shape s = null; switch(c){ case 0: s = new Rectangle(); break; case 1: s = new Circle(); break; case 2: s = new Triangle(); break; } return s; } public static void main(String[] args) { ShapeDemo demo = new ShapeDemo(); Shape[] shapes = new Shape[10]; for(int i=0;i<shapes.length;i++){ shapes[i] = demo.createShape(); } for(int i=0;i<shapes.length;i++){ shapes[i].draw();//同樣的消息,不同的響應 }
}
} package cn.edu.uibe.poly; import java.util.*; public class ShapeDemo { Random rand = new Random(); public Shape createShape(){ int c = rand.nextInt(3); Shape s = null; switch(c){ case 0: s = new Rectangle(); break; case 1: s = new Circle(); break; case 2: s = new Triangle(); break; } return s; } public static void main(String[] args) { ShapeDemo demo = new ShapeDemo(); Shape[] shapes = new Shape[10]; for(int i=0;i<shapes.length;i++){ shapes[i] = demo.createShape(); } for(int i=0;i<shapes.length;i++){ shapes[i].draw();//同樣的消息,不同的響應 }