Shape の参照変数群を通じて、それぞれの図形の描画処理を統一的に呼び出すポリモーフィズムの例です。
abstract class Shape {
abstract void draw();
}
class Circle extends Shape {
void draw() { System.out.println("円を描く"); }
}
class Square extends Shape {
void draw() { System.out.println("四角を描く"); }
}
public class Main {
public static void main(String[] args) {
// スーパークラス型の配列に異なるサブクラスのインスタンスを格納
Shape[] shapes = { new Circle(), new Square() };
for (Shape s : shapes) {
s.draw(); // 変数の型はShapeだが、実体(Circle/Square)のdraw()が動く!
}
}
}