我必須創建很多非常相似的類,它們之間只有一種方法不同。所以我認爲創建抽象類將是實現這一目標的好方法。但是我想重寫的方法(比如foo()方法)沒有默認行爲。我不想保留任何默認實現,強制所有擴展類實現此方法。我該怎麼做呢?如何強制在java中重寫方法?
回答
你在你的基類需要一個抽象方法:
public abstract class BaseClass {
public abstract void foo();
}
這樣,你不指定一個默認行爲和您強制非抽象類從BaseClass
繼承指定的實現爲foo
。
你的基類'BaseClass' **必須是抽象的。 – 2010-11-17 11:43:22
@精英紳士:是的!謝謝!固定的。 – 2010-11-17 11:43:52
啊對!我有一種誤解,認爲抽象類canot具有非抽象方法。謝謝! – 2010-11-17 11:51:02
只是使方法抽象。
這將強制所有的子類實現它,即使它是在抽象類的超類中實現的。
public abstract void foo();
感謝您提到超類場景 – 2016-02-03 09:12:50
使該方法成爲abstract
。
如果你有一個抽象類,然後讓你的方法(假設foo
抽象的爲好)
public abstract void foo();
那麼所有子類必須覆蓋foo
。
只要定義FOO()作爲在基類的抽象方法:
public abstract class Bar {
abstract void foo();
}
- 1. 強制子類重寫方法
- 2. 強制重寫方法基類
- 3. 如何強制所有孩子重寫父母的Clone()方法?
- 4. 重寫方法在Java
- 5. Java重寫方法
- 6. 如何重寫泛型方法的Java
- 7. 在Java中重寫equals - getClass()方法
- 8. 如何在調用重寫方法時強制執行方法調用(在基類中)?
- 9. 重寫重載的Java方法JRuby中
- 10. 有沒有辦法強制調用重寫的方法?
- 11. 如何在Java中編寫checkStyle方法?
- 12. 在Java繼承中限制重寫方法的範圍
- 13. 在Java中重寫hashCode()時應該重寫'equals'(Object)方法嗎?
- 14. 在java中重寫:如何解析方法調用?
- 15. 如何在java中調用一個級別的重寫方法?
- 16. Java重寫靜態方法
- 17. Java重寫Object equals()方法
- 18. 如何強制視圖在方法內重繪幾次?
- 19. Java方法註釋如何與方法重寫一起使用?
- 20. 如何在Java中讀寫時強制使用UTF-16?
- 21. Java註釋強制寫javadoc
- 22. Scala:強制子類重寫所有父方法
- 23. 如何重寫uploadifive方法?
- 24. 如何重寫方法getSelectionQtyTitlePrice
- 25. .htaccess強制刪除重寫
- 26. C#強制類重寫類
- 27. RewriteEngine強制所有重寫?
- 28. Java API中的重寫方法
- 29. 重寫HashMap等於Java中的方法
- 30. @Override不強制在重寫的方法中使用枚舉註釋
聽起來像模板方法模式的實現http://en.wikipedia.org/wiki/Template_method_pattern – Robin 2010-11-17 14:42:26
這是一個很好的問題,你希望所有的子類調用他們的父母。迄今爲止的答案似乎沒有考慮到這種情況。例子:確保一個方法需要在每個類中重寫並調用父類:'@override protected void importantMethod(){super.importantMethod(); ...}' – will 2016-09-27 01:46:32