熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

淺談JAVA中類的構造器

2013-11-23 19:36:46  來源: Java核心技術 

   現在越來越多的人開始學習java很多人求學心切免不了貪多而忽略了一些基本的也是必須搞清楚的概念下面我就來說說java裡類的構造器概念大家知道java作為一門OO語言和C++Smalltalk等一樣有個最關鍵
  
  ADT
  繼承
  多態

    當然對於java類的概念是重中之重對於類的構造和對象的實現就需要用到構造器
  例如class Professer(){
    private string name;
    private int number;
    public Professer(string nint no){
    name=n;
    number=no;
    }
    public teach(){} 
   }
  下面我們要對這個類的對象實例化Professer p =new Professer()
  以上就是構造器的語法了這裡用到了關鍵字
  new
  
  講到這裡還沒有什麼可以困擾我們的地方那麼下面我們將借助有關繼承的一些例子來繼續闡述構造器問題
  假設class OldProfesser(){
     private string name;
     private int number ;
     private int age;
     public do(){}
    } 
  
  有人也許會問為什麼這個OldProfesser類裡面為什麼沒有定義構造器?其實java已經我們定義了一個無參數的默認構造器即OldProfesser(){}
  Ok 到這裡為止沒有任何問題然而一旦讓OldProfesser繼承Professer並實例化編譯器就會報錯LOOK
     class OldProfesser extends Professer(){
       private string name;
       private int number ;
       private int age;
     
       public do(){}
    public static void mian(string[] args){
       OldProfesser o=new OldProfesser();
    }
  很抱歉你得到的是一條出錯的信息有人問了你說OldProfesser的構造器是默認的我才這樣寫沒錯OldProfesser確實存在這樣一個無參的構造器這樣寫法換做OldProfesser不做Professer的子類的情況下一定是正確的
  
  你所需要知道的是下面一個規則
  如果一個類沒有設置字定義構造器那麼編譯器會默認一個無參構造器
  在子類調用構造器時總是先調用基類的構造器
  如果自定義了構造器那麼默認構造器將不存在
  
   在上例中OldProfesser調用默認構造器前編譯器自動調用基類Professer的默認構造器然而Professer有了自定義構造器所以默認構造器不存在了編譯器報錯…………
    那麼我們該怎麼做呢?像下面這樣就OK了
  
    class OldProfesser extends Professer(){
        private string name;
        private int number;
        private int age;
        Oldprofesser(string nint noint age){
        super(nno);
        thisage=age;
        }
        public do(){}
     }
    
     這就是在子類中顯式的調用基類構造器注意super必須是{}中的第一個執行語句其實我們還有另外一種方法在Professer類裡面補充一個消失掉的默認構造器如下
   
    class Professer(){
      private string name;
      private int number;
      public Professer(string nint no){
      name=n;
      number=no;
     }
      Professe(){}
      public teach(){} 
   }
   
  值得一提的是構造器方法中構造器的名稱要與類的名稱完全相同包括大小寫
     好了關於構造器的一些基本問題講的差不多了請多指正…………

From:http://tw.wingwit.com/Article/program/Java/hx/201311/27172.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.