java---構造器


public class SomeTrying{
    
    
    public static void main(String[] args){
        new Son();
        new Son().Father();        
    }
}
 
 class Father{  
         //父類Father的無參構造函數
        public Father (){  
            System.out.println("Father Construtor");  
        }  
      //父類Father的帶參構造函數 ,構造函數不是成員函數,它只代表類本身,所以一個類可以有多個構造函數
        public Father (int x){  
            System.out.println("Father Construtor " + x);  
        }  
         
      /*  父類Father的成員函數,就是類中的普通函數,所以是不可以重復的,如果再寫一個如下,
       * 編譯器會報 Duplicate method Father() in type Father 錯誤,原因是兩個成員函數發生了沖突。
       public int Father (){  
            System.out.println("Father member function");  
      */
        
        public void Father (){  
            System.out.println("Father member function");  
        }  
    }  
     
     
     //類son是繼承父類Father的子類
    class Son extends Father {  
        //在子類的構造函數中調用父類構造函數,
        public Son (){  
            super(1);  
            System.out.println("Son Construtor");  
        }  
       
        //重寫父類的成員函數
        public void Father(){  
            System.out.println("Inherited Father member function.");  
            super.Father();  
        }  
    } 

1、因為類中顯式的聲明了一個帶參數構造器,所以默認的構造器就不存在了,但是你在子類的構造器中並沒有顯式的調用父類的構造器(創建子類對象的時候,一定會去調用父類的構造器,這個不用問為什么),沒有顯式調用的話,虛擬機就會默認調用父類的默認構造器,但是此時你的父類的默認構造器已經不存在了,這也就是為什么父類中必須保留默認構造器的原因。

 PS.應該養成良好的編程習慣,任何我們自己定義的類,都顯式的加上默認的構造器,以后更深入的學習之后,會發現有很多好處

方法重寫規則

  • 參數列表必須完全與被重寫方法的相同;
  • 返回類型必須完全與被重寫方法的返回類型相同;
  • 訪問權限不能比父類中被重寫的方法的訪問權限更低。例如:如果父類的一個方法被聲明為public,那么在子類中重寫該方法就不能聲明為protected。
  • 父類的成員方法只能被它的子類重寫。
  • 聲明為final的方法不能被重寫。
  • 聲明為static的方法不能被重寫,但是能夠被再次聲明。
  • 子類和父類在同一個包中,那么子類可以重寫父類所有方法,除了聲明為private和final的方法。
  • 子類和父類不在同一個包中,那么子類只能夠重寫父類的聲明為public和protected的非final方法。
  • 重寫的方法能夠拋出任何非強制異常,無論被重寫的方法是否拋出異常。但是,重寫的方法不能拋出新的強制性異常,或者比被重寫方法聲明的更廣泛的強制性異常,反之則可以。
  • 構造方法不能被重寫。
  • 如果不能繼承一個方法,則不能重寫這個方法

參考:http://www.runoob.com/java/java-override-overload.html

   http://blog.csdn.net/yuxiaohui78/article/details/43887373

   http://www.cnblogs.com/by-dream/p/3967123.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM