推薦閱讀:
Java 重寫(Override)1.重寫是子類對父類的允許訪問的方法的實現(xiàn)過程進(jìn)行重新編寫, 返回值和形參都不能改變,。即外殼不變,核心重寫,! 2.重寫的好處在于子類可以根據(jù)需要,,定義特定于自己的行為。也就是說子類能夠根據(jù)需要實現(xiàn)父類的方法,。 3.重寫方法不能拋出新的檢查異?;蛘弑缺恢貙懛椒ㄉ昝鞲訉挿旱漠惓!@纾焊割惖囊粋€方法申明了一個檢查異常 IOException(后期章節(jié)會講到),,但是在重寫這個方法的時候不能拋出 Exception 異常,,因為 Exception 是 IOException 的父類,,只能拋出 IOException 的子類異常。 在面向?qū)ο笤瓌t里,,重寫意味著可以重寫任何現(xiàn)有方法,。實例如下: 在上面的例子中可以看到,盡管dog屬于Animal類型,,但是它運行的是Dog類的sleep方法,。 這是由于在編譯階段,,只是檢查參數(shù)的引用類型,。然而在運行時,Java虛擬機(JVM)指定對象的類型并且運行該對象的方法,。 因此在上面的例子中,,之所以能編譯成功,是因為Animal類中存在sleep方法,,然而運行時,,運行的是特定對象的方法。也就是dog類中的sleep方法,。 super關(guān)鍵字以上使用了super關(guān)鍵字 ,。super是直接父類對象的引用??梢酝ㄟ^super來訪問父類中被子類覆蓋的方法或?qū)傩浴?/span> 除了Object類之外其他所有類的構(gòu)造方法第一句總是super(…) 任何類的構(gòu)造方法中,,若是構(gòu)造方法的第一行代碼沒有顯式的調(diào)用super(...);那么Java默認(rèn)都會調(diào)用super(); 所以你這里的super(); 加不加都無所謂。 例如:Dog類重寫了父類的sleep方法,,那么在子類中還想調(diào)用父類方法怎么辦呢,? 只需要在Dog類中的任意方法中使用super.sleep()即可。 Object類Object類是所有Java類的根基類,如果在類的聲明中未使用extends關(guān)鍵字指明其基類,,則默認(rèn)基類為Object類 ,并且繼承了該類的所有方法,,以下的方法大家簡單記住幾個即可。 toString方法:其返回值是 String 類型,,描述當(dāng)前對象的有關(guān)信息,。該方法一般都會在子類重寫。 equals方法:提供定義對象是否“相等”的邏輯,。x.equals ( y ) 當(dāng) x 和 y是同一個對象的應(yīng)用時返回 true 否則返回 false,。 有興趣的大家可以去看看這2個方法的源碼非常簡單。 后續(xù)需要使用在講解,。 重寫與重載之間的區(qū)別首先看一張圖 重點 方法的重寫(Overriding)和重載(Overloading)是java多態(tài)性的不同表現(xiàn),,重寫是父類與子類之間多態(tài)性的一種表現(xiàn),重載可以理解成多態(tài)的具體表現(xiàn)形式,。 (1)方法重載是一個類中定義了多個方法名相同,而它們的參數(shù)的數(shù)量不同或數(shù)量相同而類型和次序不同,則稱為方法的重載(Overloading),。 (2)方法重寫是在子類存在方法與父類的方法的名字相同,而且參數(shù)的個數(shù)與類型一樣,返回值也一樣的方法,就稱為重寫(Overriding),。 (3)方法重載是一個類的多態(tài)性表現(xiàn),而方法重寫是子類與父類的一種多態(tài)性表現(xiàn)。 習(xí)題: 動物類:方法(睡,,跑) 企鵝類:繼承動物類并且重寫跑的方法打印“一晃一晃的跑” 老鼠類:繼承動物類并且重寫睡的方法打印“趴著睡覺” 答案在公眾號輸入“繼承重寫” 公眾號資源免費分享?。?! 2017年某培訓(xùn)班最新視頻+幾十個項目免費分享 公眾號輸入“我要視頻” |
|