覆写
1. 方法的覆寫:子類定義與父類方法名稱相同,參數個數和類型完全相同的方法。
2. 如果方法覆寫,那么在實例化子類的時候,調用的將會是子類所覆寫過的方法。
3. 覆寫的意義在于優化父類的功能。
4. 子類方法覆寫后,如果想要調用父類的方法,必須使用 super.方法()
5. 只要是在子類中調用父類的方法,一定要在方法前追加 super.方法()
class Older {public void print(){System.out.println("父類的方法");} }class Young extends Older {public void print(){System.out.println("子類覆寫了父類的方法");} }public class Demo{public static void main(String args[]){new Young().print();} } /*--------------------------------------------- E:\Javacode>java Demo 子類覆寫了父類的方法E:\Javacode>*/?
方法覆寫的限制:
1. 被覆寫的方法不能擁有比父類更為嚴格的訪問權限
public > default > private
a. 如果父類用 private 定義,那么子類可以為 private, default, public
b. 如果父類用 default 定義,那么子類可以為 default, public
c. 如果父類用 public 定義,那么子類只能用 public 定義
?
方法重載與覆寫的區別:
重載:方法名稱相同,返回值,參數類型和個數不同,沒有權限限制,發生在 一個類中
覆寫:方法名稱,返回值,參數類型和個數都相同,被覆寫的方法不能有更嚴格的控制權限,發生在繼承關系中
?
屬性覆蓋:子類定義了與父類相同名稱的成員
class Old {String info = "我是你爸爸"; }class Son extends Old {String info = "我是你兒子"; //屬性覆蓋--如果父類的 info 用 private 封裝了,那么子類的info就和父類沒有什么關系了public void fun(){System.out.println(super.info);System.out.println(this.info);} }public class Demo{public static void main(String args[]){Son son = new Son();son.fun();} } /*--------------------------------------------- E:\Javacode>java Demo 我是你爸爸 我是你兒子E:\Javacode>*/?
?
super 和 this 的區別:
1. 在程序類中使用 this 表示先從本類查找所需要的屬性或者方法。如果本來不存在再查找父類定義。
2. super 表示不查找子類,直接查找父類的屬性或者方法。
3. this 和 super 都可以進行構造方法的調用, this() 調用的是本類的構造方法, super() 是由子類調用父類的構造,兩者都需要放在構造方法的首行,所以不能同時出現。
4. this 可以表示當前對象。
轉載于:https://www.cnblogs.com/dododo70/p/10402453.html
總結
- 上一篇: LeetCode题解之Reorder L
- 下一篇: Docker最全教程——数据库容器化之持