不要在覆写的方法中用super
生活随笔
收集整理的這篇文章主要介紹了
不要在覆写的方法中用super
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
@Override是語義的檢查,IDE會檢查父類是否存在對應的方法,如果有,則檢查是否允許覆寫,如果是final則不允許,否則編譯成功。
但是在子類覆寫的方法調用super則沒有了覆寫的意義,而具有擴展的意義,因為你并沒有取代父類的方法而是在其結果后執行了自己增加的行為
public class SuperClass { public void save() { // Perform save logic } }public class SubClass extends SuperClass {private Object b;@Overridepublic void save() { super.save(); // Performs the save logic for SuperClasssave(b); // Perform additional save logic } }但是注意,如果父類的save方法中調用了其他的方法,且被子類覆寫,那么只會調用子類的方法,因為此時只有一個this,那就是子類本身,super中的this此時已經動態鏈接到了子類,
任何的調用,都與父類無關,所以除非是構造函數,通常在成員函數中調用super是一種壞的味道,因為這個時候,你已經無法控制其真實的行為。
轉載于:https://www.cnblogs.com/crazywings/archive/2013/06/09/3129432.html
總結
以上是生活随笔為你收集整理的不要在覆写的方法中用super的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谭浩强C-结构体
- 下一篇: UIImageView 上下和左右翻转