亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

java中的多態性

java中的多態性

月亮島Superman 2017-12-16 23:15:01
public class Test01 {?????public static void main(String[] args) {??????????Father01 obj = new Son01();??????????System.out.println(obj);??????????System.out.println(obj.name);?????}}class Father01 {?????????public String name = "fu";?????????Father01() {??????? ? System.out.println(this);?????? ?? System.out.println(this.name);????????????}}class Son01 extends Father01 {?public String name = "son";}? 本人很不理解System.out.println(obj.name);的結果為什么是? fu? 呢?? ?Father01 obj = new Son01(); ?這段代碼只有一個對象,那就是new出來的Son01對象,obj指向的是Son01對象,為什么輸出結果不是son而是fu?求大神解答,感激不盡
查看完整描述

1 回答

?
qq_狼煙四起_0

TA貢獻12條經驗 獲得超5個贊

?Father01 obj = new Son01(); 的意思是在類Father01中實例化一個Son01()方法的對象。但是你的Father01類中沒有Son01()方法,所以實例化的是父類的對象,最后執行主類中的兩條printf,再輸出一條fu。其實obj一直是父類的對象。

父類 xx = new 子類()定義的對象只能調用繼承來的方法。就是父類中的方法

子類 xx = new 子類()定義的對象調用的是子類的方法,而不是父類的。

package?test;

public?class?FatherNewSon?{
	/**
	?*?@param?args
	?*/
	public?static?void?main(String[]?args)?{
		//?TODO?Auto-generated?method?stub
		a?ta?=?new?b();
		b?tb?=?new?b();
		ta.test();
		//ta.son();
		tb.test();
		tb.son();
	}
}

class?a?{
	public?a()?{
	}

	public?void?test()?{
		System.out.println(this.getClass().getName());
	}
}

class?b?extends?a?{
	public?b()?{
		System.out.println(false);
	}

	public?void?son()?{
		System.out.println("son");
	}
}

ta.son是錯誤的方法

查看完整回答
反對 回復 2017-12-17
  • 1 回答
  • 0 關注
  • 1226 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號