class Shape {
void draw() {
System.out.println("Drawing a shape");
}
}
class Circle extends Shape {
void draw() {
System.out.println("Drawing a circle");
}
}
public class Main {
public static void main(String[] args) {
// Shape クラスのオブジェクトを作成
Shape shape = new Shape();
// Shape クラスの draw メソッドを呼び出す
shape.draw();
// Circle クラスのオブジェクトを作成
Circle circle = new Circle();
// Circle クラスの draw メソッドを呼び出す(オーバーライドされたバージョンが呼ばれる)
circle.draw();
// アップキャストを使用して Shape クラスの参照変数で Circle クラスのオブジェクトを操作
Shape upcastedCircle = new Circle();
// Shape クラスの参照変数で Circle クラスの draw メソッドを呼び出す(オーバーライドされたバージョンが呼ばれる)
upcastedCircle.draw();
}
}
この例では、Shape
クラスと Circle
クラスを使用して、メインクラスでそれぞれのクラスのオブジェクトを作成しています。そして、アップキャストを使用して Shape
クラスの参照変数で Circle
クラスのオブジェクトを操作しています。