LoginSignup
yuhi58587
@yuhi58587

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

インスタンス生成時の疑問

Q&AClosed

インスタンスを生成するとき「クラス名=コンストラクタ名」にならない理由

インスタンスを生成するときに、

A a = new B();

という生成方法を見つけ、クラス名=コンストラクタ名になってないよね?という疑問を抱きました。
私の認識は、クラス作成時は必ずクラス名とコンストラクタ名は同一になるという認識ですが、継承を行なっている場合は必ずしもそういうことにならないのかな?とわからなくなりました。

該当するソースコード

class A {
  public A() {
    System.out.println("A");
  }
}
class B extends A {
  public B() {
    System.out.println("B");
  }
}
public class Main {
  public static void main(String[] args) {
    A a = new B();
  }
}

実行結果

A
B

有識者の方へ

拙い文で申し訳ございません。基本的なところかもしれませんが、ご教示いただければと思います。よろしくお願いいたします。

0

2Answer

Object o=new B();//oは、親クラスのObjectとして取り扱いする。アップキャスト(暗黙的)
A a=(A)o;//子クラスとして取り扱いする。ダウンキャスト
B b=(B)a;//子クラスとして取り扱いする。ダウンキャスト

1Like

Comments

  1. @yuhi58587

    Questioner

    回答ありがとうございます。
    理解いたしました!

Comments

  1. @yuhi58587

    Questioner

    ありがとうございます。
    一度目を通してみます!

Your answer might help someone💌