🎯

【Java】クラス解説18・アップキャスト1

2024/01/18に公開

アップキャスト1のコード例

下記のコード例を参考にして、アップキャストについて解説します。

public class Main {
    public static void main(String[] args) {
        // 今までのインスタンス生成
        MyClass obj1 = new MyClass();
        Fuzi obj2 = new Fuzi();
        // アップキャスト
        MyClass obj3 = new Fuzi();
        MyClass obj4 = new Sakura();
    }
}
// スーパークラスMyClassを定義
class MyClass {}
// サブクラスFuziを定義
class Fuzi extends MyClass{}
// サブクラスSakuraを定義
class Sakura extends MyClass{}

コード例の解説

インスタンス生成については、下記の通り行います。

型名(=クラス名) 変数 = new演算子 コンストラクタ呼び出し(=クラス名()) 

参考記事

https://zenn.dev/goriki/articles/003-instance-creation


今までのインスタンス生成は、下記の通り行ってきました。

MyClass obj1 = new MyClass();
Fuzi obj2 = new Fuzi();

「型名」と「コンストラクタ呼び出し」が同じクラス名でした。


アップキャストのインスタンス生成は、下記の通り行います。

MyClass obj3 = new Fuzi();
MyClass obj4 = new Sakura();

「型名」はスーパークラス名で、「コンストラクタ呼び出し」はサブクラス名です。
アップキャストとは、スーパークラス型の変数objに、生成されたサブクラスのインスタンスが代入されることを言います。

Discussion