2013-02-03 63 views
2

我有一個愚蠢的困惑,當我們覆蓋了父類的方法,然後就由此而來覆蓋方法仍持有父類方法的代碼,或者它是我們可以定義一個新的新鮮的方法?怎麼做Java的重寫工作

+0

有點推理可以給你答案。如果你的方法也包含了重寫的父類方法的代碼,那麼就不需要super.foo()。或者,如果這樣做會出現混亂,因爲開發人員將無法選擇是否調用super重載方法。但是,不,您的方法不會「保留」除您編寫的代碼之外的任何代碼。 – Simon

回答

6

閱讀這篇文章,以獲得清晰的概念。 http://docs.oracle.com/javase/tutorial/java/IandI/override.html

一般來說,我們做的時候,我們想擴展父類的方法,或者要更改的完整的邏輯。

對於離:超類已經排序它們使用冒泡排序方法。

在派生類,你想採取同樣的方法,但要實現快速排序。然後我們重寫。

如果要執行父類方法首先那麼你的子類覆蓋方法的邏輯那麼我們就用super.methodname()

最後你的問題點如果你覆蓋的方法,而不是所謂的像super.method()父類的方法,然後它並不意味着它的新鮮方法。它的意思是我已經解釋了排序的例子。

1

發生的事情是正是什麼寫在註釋。

你覆蓋的方法和而不是運行該方法的父代碼,它運行當前類的代碼

+0

...如果你不明確地調用'super.method()'。 – Dan