★★Java質問・相談スレッド166★★
■ このスレッドは過去ログ倉庫に格納されています
0035デフォルトの名無しさん
2013/12/07(土) 22:34:04.55AAA hoge3 = new BBB();
では型宣言側のhoge3.AAA()はOKで、hoge3.BBB()はNGですが、
下のオーバーライドを確認するためのプログラムでは、逆の挙動が出てます。
上の例に従うとAAA hoge3=new BBB(); → hoge3.show();は、
AAA.show()が示されると思ったのですが、実際はBBB.show()でした。
難しい。。。
どなたか説明いただけると助かります
class AAA{
String a="AAA";
void show(){System.out.println("AAA.show()");}}
class BBB extends AAA{
String a="BBB";
void show(){System.out.println("BBB.show()");}}
public class javatest3 {
public static void main(String arg[]){
AAA hoge1 = new AAA();
AAA hoge2 = new BBB();
BBB hoge3 = new BBB();
hoge1.show();
hoge2.show();
hoge3.show();
System.out.println(hoge1.a);
System.out.println(hoge2.a);
System.out.println(hoge3.a);}}
■ このスレッドは過去ログ倉庫に格納されています