課程
/后端開發
/Java
/Java入門第二季 升級版
final類可以繼承其他類嗎
2016-10-08
源自:Java入門第二季 升級版 9-3
正在回答
可以繼承的,只是其他類無法繼承final類
之所以要使用final方法,可能是出于對兩方面理由的考慮。第一個是為方法“上鎖”,防止任何繼承類改變它的本來含義。設計程序時,若希望一個方法的行為在繼承期間保持不變,而且不可被覆蓋或改寫,就可以采取這種做法。采用final方法的第二個理由是程序執行的效率。將一個方法設成final后,編譯器就可以把對那個方法的所有調用都置入“嵌入”調用里。只要編譯器發現一個final方法調用,就會(根據它自己的判斷)忽略為執行方法調用機制而采取的常規代碼插入方法(將自變量壓入堆棧;跳至方法代碼并執行它;跳回來;清除堆棧自變量;最后對返回值進行處理)。相反,它會用方法主體內實際代碼的一個副本來替換方法調用。這樣做可避免方法調用時的系統開銷。當然,若方法體積太大,那么程序也會變得雍腫,可能受到到不到嵌入代碼所帶來的任何性能提升。因為任何提升都被花在方法內部的時間抵消了。Java編譯器能自動偵測這些情況,并頗為“明智”地決定是否嵌入一個final方法。然而,最好還是不要完全相信編譯器能正確地作出所有判斷。通常,只有在方法的代碼量非常少,或者想明確禁止方法被覆蓋的時候,才應考慮將一個方法設為final。類內所有private方法都自動成為final。由于我們不能訪問一個private方法,所以它絕對不會被其他方法覆蓋(若強行這樣做,編譯器會給出錯誤提示)??蔀橐粋€private方法添加final指示符,但卻不能為那個方法提供任何額外的含義。
final 用于聲明屬性、方法和類,分別表示屬性不可變,方法不可重寫,類不可繼承
不是可以,是一定從別的類繼承過來的。
qq_去哪呢_0 提問者
舉報
課程升級!以終為始告別枯燥,在開發和重構中體會Java面向對象編程的奧妙
2 回答接口可以繼承父類嗎?
1 回答父類私有屬性子類可以繼承嗎?
3 回答子類可以繼承父類的private屬性嗎
6 回答抽象類不是不可以被繼承嗎?
7 回答類的繼承不是單繼承嗎?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-10-08
可以繼承的,只是其他類無法繼承final類
2016-10-08
之所以要使用final方法,可能是出于對兩方面理由的考慮。第一個是為方法“上鎖”,防止任何繼承類改變它的本來含義。設計程序時,若希望一個方法的行為在繼承期間保持不變,而且不可被覆蓋或改寫,就可以采取這種做法。
采用final方法的第二個理由是程序執行的效率。將一個方法設成final后,編譯器就可以把對那個方法的所有調用都置入“嵌入”調用里。只要編譯器發現一個final方法調用,就會(根據它自己的判斷)忽略為執行方法調用機制而采取的常規代碼插入方法(將自變量壓入堆棧;跳至方法代碼并執行它;跳回來;清除堆棧自變量;最后對返回值進行處理)。相反,它會用方法主體內實際代碼的一個副本來替換方法調用。這樣做可避免方法調用時的系統開銷。當然,若方法體積太大,那么程序也會變得雍腫,可能受到到不到嵌入代碼所帶來的任何性能提升。因為任何提升都被花在方法內部的時間抵消了。Java編譯器能自動偵測這些情況,并頗為“明智”地決定是否嵌入一個final方法。然而,最好還是不要完全相信編譯器能正確地作出所有判斷。通常,只有在方法的代碼量非常少,或者想明確禁止方法被覆蓋的時候,才應考慮將一個方法設為final。
類內所有private方法都自動成為final。由于我們不能訪問一個private方法,所以它絕對不會被其他方法覆蓋(若強行這樣做,編譯器會給出錯誤提示)??蔀橐粋€private方法添加final指示符,但卻不能為那個方法提供任何額外的含義。
2016-10-08
final 用于聲明屬性、方法和類,分別表示屬性不可變,方法不可重寫,類不可繼承
2016-10-08
不是可以,是一定從別的類繼承過來的。