java 构造函数和super
生活随笔
收集整理的這篇文章主要介紹了
java 构造函数和super
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
package one;
class book
{book(){System.out.println("這是沒有參數的父類的構造方法");}book(int i){System.out.println("有參數 父類的構造方法");}public void get(){System.out.println("book父類");}}
class dictionary extends book
{dictionary() {System.out.println("子類 無參數 的構造方法哦");} dictionary(int i){System.out.println("子類 有參數 的構造方法哦");}public void get() //子類覆蓋父類的方法{System.out.println("子類dictionary.");}public void get(int pages) /*get方法的重載, 重載是 方法名相同,參數表不同*/ {System.out.println("子類dictionary get方法重載.");}public void son(){System.out.println("這是子類新添加的方法,父類沒有哦.");}
}public class haha { public static void main(String[] args) {// TODO Auto-generated method stubbook a= new book();System.out.println("-----------------");book e= new book(123);System.out.println("-----------------");book b= new dictionary(2);//多態 向上類型轉換System.out.println("-----------------");dictionary c=new dictionary(3);System.out.println("-----------------");dictionary d=new dictionary();b.get(); c.son();
// b.son(); 此句編譯不通過/*(編程看左邊,執行看右邊)book b= new dictionary(2); 即編譯器看的是引用變量,因為book類里面沒有son這個方法*/}}
運行結果
這是沒有參數的父類的構造方法 ----------------- 有參數 父類的構造方法 ----------------- 這是沒有參數的父類的構造方法 子類 有參數 的構造方法哦 ----------------- 這是沒有參數的父類的構造方法 子類 有參數 的構造方法哦 ----------------- 這是沒有參數的父類的構造方法 子類 無參數 的構造方法哦 子類dictionary. 這是子類新添加的方法,父類沒有哦.1 調用子類構造函數的時候,會默認先調用父類的無參數構造方法,即相當于隱藏了一行代碼 super();
2.在你程序沒有寫構造方法時候,編譯器會默認幫你寫一個無參數的構造方法,只不過方法里面沒有內容
然而當你編寫了構造函數的話,編譯器就不會再幫你添加無參數的構造方法了,即使你只編寫了有參數的構造方法。
如果你已經寫了一個有參數的構造函數,并且你需要一個沒有參數的構造函數,你必須自己動手寫。
只要你有自己寫的構造函數,不管是哪一種,這都會想是在跟編譯器說:老兄,我自己的構造函數不用你管。
例
寫了book(i),而沒有寫book()這種無參數的,編譯器會認為你既然寫了構造函數了,我就不管了,所以不會為你默認添加book() 而子類的構造函數是要先調用父類的,默認無參數的構造函數,此時我們因為沒有定義這種,所以報錯。
dictionary()通過super(i)調用父類構造函數。編譯成功
dictionary(i)沒有編譯成功,是因為默認 子類構造函數 先調用無參數的父類構造函數,super() ,然后因為沒有嘛,所以錯誤。
構造函數的作用
來初始化對象的狀態。
總結
以上是生活随笔為你收集整理的java 构造函数和super的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python|每日一练|幂函数算法|位运
- 下一篇: 4万字总结,关于数据仓库与数据湖