課程
/后端開發
/Java
/全面解析Java注解
而Child c=new Child();不會出現下劃線
2015-12-15
源自:全面解析Java注解 2-1
正在回答
//1?有警告,需忽略 Person?p?=?new?Child(); //2?無警告 Child?p?=?new?Child(); p.sing();
new Child()創建了Child類的實例化對象,變量p引用了這個Child類的對象,所以p是引用變量,而p前面的類名則表明p的類型,即是Person類型或者Child類型。
Person類型下的方法已經過時,而Child類型依然實現了這個方法(注意這里的“過時”的意思,老師講的時候是說sing()方法定義得不太合適,因為有些類根本不需要實現這個方法,就像有些人不會唱歌,但是標準里卻有唱歌這個標準)。所以如果要將引用變量聲明為Person類型并去調用過時的sing()方法是不合適的,所以要有警告;然而就像有些人還是很會唱歌的,若聲明為Child類型的并去調用sing()方法,它不僅會唱,唱得還非常好,是再合適不過了,所以就無需警告。我覺得還是要理解“過時”的含義,過時不是錯,只是不適用于大多數。
######
這也只是我的理解,覺得我理解得也不透徹,因為也注意到了這個問題,所以才這樣關注。以后也會繼續關注的。
子類Child覆蓋了父類的方法 ? 使用了@Override
但是父類Person 修飾了一個已經過時的方法 ?使用了@Deprecated
此時強行調用父類繼承來的方法就會有個代碼過時的橫線,并且報一個代碼過時的警告,但不會影響正常使用。
如果要去掉警告可以使用 ?@suppressWarings("deprecation") ?來忽略這個警告
你不NEW個出來就不會調用 ?都不用他當然不管你是不是過時了
有可能child的構造函數標記為已過時
類型對應當然不會有下劃線;對應不上才會
深夜雀電臺 提問者
舉報
注解Java中的常用技能,通過實戰演示注解在實際項目中的應用
4 回答按著老師代碼敲為什么我會報錯呢,還說Child無法轉換到Person?
1 回答idea 沒有下劃線的警告
1 回答我寫的這個類為什么會報錯
2 回答為什么要使用反射?
2 回答為什么Column不用強轉,而Table要?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2017-12-04
new Child()創建了Child類的實例化對象,變量p引用了這個Child類的對象,所以p是引用變量,而p前面的類名則表明p的類型,即是Person類型或者Child類型。
Person類型下的方法已經過時,而Child類型依然實現了這個方法(注意這里的“過時”的意思,老師講的時候是說sing()方法定義得不太合適,因為有些類根本不需要實現這個方法,就像有些人不會唱歌,但是標準里卻有唱歌這個標準)。所以如果要將引用變量聲明為Person類型并去調用過時的sing()方法是不合適的,所以要有警告;然而就像有些人還是很會唱歌的,若聲明為Child類型的并去調用sing()方法,它不僅會唱,唱得還非常好,是再合適不過了,所以就無需警告。我覺得還是要理解“過時”的含義,過時不是錯,只是不適用于大多數。
######
這也只是我的理解,覺得我理解得也不透徹,因為也注意到了這個問題,所以才這樣關注。以后也會繼續關注的。
2016-07-18
子類Child覆蓋了父類的方法 ? 使用了@Override
但是父類Person 修飾了一個已經過時的方法 ?使用了@Deprecated
此時強行調用父類繼承來的方法就會有個代碼過時的橫線,并且報一個代碼過時的警告,但不會影響正常使用。
如果要去掉警告可以使用 ?@suppressWarings("deprecation") ?來忽略這個警告
2016-04-11
你不NEW個出來就不會調用 ?都不用他當然不管你是不是過時了
2016-01-31
有可能child的構造函數標記為已過時
2015-12-15
類型對應當然不會有下劃線;對應不上才會