Java SE7 Silver の資格を目指し勉強中の学生です。
実務経験はありません。
ポリモーフィズムについて質問です。
なぜ、サブクラスのオブジェクトをスーパークラス型変数に代入するのでしょうか。
サブクラスのメソッドやフィールドが使えなくなるので、不便になるのでは、と思います。
また、extendsやimplementsの時にしか使えず、すでに継承や実装をしているので、
わざわざ、型を明示しなくても使えるのではと思いました。
1 class A{
2 public A(){
3 System.out.println("A");
4 }
5 }
1 class B extends A{
2 public B(){
3 System.ou.println("B");
4 }
5 }
これらのクラスを利用する以下のプログラムを実行したときの結果は?
1 public class Main{
2 public static void main(String[] args){
3 A a = new B();
4 }
5 }
回答は「A Bと表示される」です。
子クラスのコンストラクタを呼び出すと、必ず親クラスのコンストラクタが先に処理されるということは回答を見てわかりました。
ただ、Mainクラスの
A a = new B();
について、すでにクラスBはAを継承しているので
B a = new B();
でもいいのではと思いました。
実務を積まないと分かりにくいとネットに書いてありましたが、
どうぞ、よろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。