Java自學 介面與繼承 重寫

2021-09-14 08:42:27 字數 1332 閱讀 4548

子類可以繼承父類的物件方法

在繼承後,重複提供該方法,就叫做方法的重寫

又叫覆蓋 override

步驟 1 :父類item

父類item有乙個方法,叫做effect

package property;

public class item

public void effect()

}

步驟 2 :子類lifepotion

子類lifepotion繼承item,同時也提供了方法effect

package property;

public class lifepotion extends item

}

步驟 3 :呼叫重寫的方法

呼叫重寫的方法

呼叫就會執行重寫的方法,而不是從父類的方法

所以lifepotion的effect會列印:

「血瓶使用後,可以回血」

package property;

public class item

public static void main(string args)

}

步驟 4 :如果沒有重寫這樣的機制怎麼樣?

如果沒有重寫這樣的機制,也就是說lifepotion這個類,一旦繼承了item,所有方法都不能修改了。

但是lifepotion又希望提供一點不同的功能,為了達到這個目的,只能放棄繼承item,重新編寫所有的屬性和方法,然後在編寫effect的時候,做一點小改動.

這樣就增加了開發時間和維護成本

package property;

public class item

public void effect() }

package property;

public class lifepotion

public void effect()

}

練習: 重寫

(設計乙個類magicpotion 藍瓶,繼承item, 重寫effect方法

並輸出 「藍瓶使用後,可以回魔法」)

答案

package property;

public class magicpotion extends item

}

Java自學 介面與繼承 隱藏

與重寫類似,方法的重寫是子類覆蓋父類的物件方法 隱藏,就是子類覆蓋父類的類方法 步驟 1 父類 父類有乙個類方法 battlewin package charactor public class hero 步驟 2 子類隱藏父類的類方法 package charactor public class ...

Java自學 介面與繼承 內部類

內部類分為四種 非靜態內部類 靜態內部類 匿名類本地類 步驟 1 非靜態內部類 非靜態內部類 battlescore 戰鬥成績 非靜態內部類可以直接在乙個類裡面定義 比如 戰鬥成績只有在乙個英雄物件存在的時候才有意義 所以例項化battlescore 的時候,必須建立在乙個存在的英雄的基礎上 語法 ...

Java自學 介面與繼承 預設方法

步驟 1 什麼是預設方法 預設方法是jdk8新特性,指的是介面也可以提供具體方法了,而不像以前,只能提供抽象方法 mortal 這個介面,增加了乙個預設方法revive,這個方法有實現體,並且被宣告為了default package charactor public inte ce mortal 步...