我必須創建很多非常相似的類,它們之間只有一種方法不同。所以我認爲創建抽象類將是實現這一目標的好方法。但是我想重寫的方法(比如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. 如何在Java中重寫庫方法?
- 2. 如何強制重寫方法在Swift中調用超級方法?
- 3. 強制重寫方法基類
- 4. 強制子類重寫方法
- 5. 如何強制重寫url?
- 6. Java中的強制重寫字段
- 7. 如何強制所有孩子重寫父母的Clone()方法?
- 8. 重寫方法在Java
- 9. Java重寫方法
- 10. 如何重寫泛型方法的Java
- 11. 在Java中重寫equals - getClass()方法
- 12. 在java中重寫hashcode和equals方法?
- 13. 在Java中重寫抽象方法
- 14. 如何在調用重寫方法時強制執行方法調用(在基類中)?
- 15. 重寫重載的Java方法JRuby中
- 16. 如何在Java中編寫checkStyle方法?
- 17. 如何在java printf方法中編寫「%」
- 18. 有沒有辦法強制調用重寫的方法?
- 19. 如何在Object-C中重寫方法
- 20. 在Java繼承中限制重寫方法的範圍
- 21. 在Java中重寫hashCode()時應該重寫'equals'(Object)方法嗎?
- 22. 如何在java中調用一個級別的重寫方法?
- 23. 在java中重寫:如何解析方法調用?
- 24. Java重寫Object equals()方法
- 25. Java重寫靜態方法
- 26. 如何限制在C#中重寫父類方法的子類?
- 27. 如何強制視圖在方法內重繪幾次?
- 28. 如何在Java中讀寫時強制使用UTF-16?
- 29. Java方法註釋如何與方法重寫一起使用?
- 30. 在重寫方法中如何解決對重寫方法的調用?
聽起來像模板方法模式的實現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