不要在覆写的方法中用super
生活随笔
收集整理的這篇文章主要介紹了
不要在覆写的方法中用super
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
@Override是語(yǔ)義的檢查,IDE會(huì)檢查父類是否存在對(duì)應(yīng)的方法,如果有,則檢查是否允許覆寫,如果是final則不允許,否則編譯成功。
但是在子類覆寫的方法調(diào)用super則沒(méi)有了覆寫的意義,而具有擴(kuò)展的意義,因?yàn)槟悴](méi)有取代父類的方法而是在其結(jié)果后執(zhí)行了自己增加的行為
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方法中調(diào)用了其他的方法,且被子類覆寫,那么只會(huì)調(diào)用子類的方法,因?yàn)榇藭r(shí)只有一個(gè)this,那就是子類本身,super中的this此時(shí)已經(jīng)動(dòng)態(tài)鏈接到了子類,
任何的調(diào)用,都與父類無(wú)關(guān),所以除非是構(gòu)造函數(shù),通常在成員函數(shù)中調(diào)用super是一種壞的味道,因?yàn)檫@個(gè)時(shí)候,你已經(jīng)無(wú)法控制其真實(shí)的行為。
轉(zhuǎn)載于:https://www.cnblogs.com/crazywings/archive/2013/06/09/3129432.html
總結(jié)
以上是生活随笔為你收集整理的不要在覆写的方法中用super的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 谭浩强C-结构体
- 下一篇: UIImageView 上下和左右翻转