Object o=new B();//oは、親クラスのObjectとして取り扱いする。アップキャスト(暗黙的)
A a=(A)o;//子クラスとして取り扱いする。ダウンキャスト
B b=(B)a;//子クラスとして取り扱いする。ダウンキャスト
1Like
インスタンスを生成するときに、
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
拙い文で申し訳ございません。基本的なところかもしれませんが、ご教示いただければと思います。よろしくお願いいたします。
Object o=new B();//oは、親クラスのObjectとして取り扱いする。アップキャスト(暗黙的)
A a=(A)o;//子クラスとして取り扱いする。ダウンキャスト
B b=(B)a;//子クラスとして取り扱いする。ダウンキャスト
@yuhi58587
Questioner回答ありがとうございます。
理解いたしました!
@yuhi58587
Questionerありがとうございます。
一度目を通してみます!