有參構造與無參構造


1.1   構造方法

構造方法是一種特殊的方法,它是一個與類同名且返回值類型為同名類類型的方法。對象的創建就是通過構造方法來完成,其功能主要是完成對象的初始化。當類實例化一個對象時會自動調用構造方法。構造方法和其他方法一樣也可以重載。

 
 

[修飾符] 類名(){

}

 

構造方法根據是否有參數分為無參構造和有參構造

 

1.1.1     無參構造

無參構造方法就是構造方法沒有任何參數。構造方法在創建對象(new Dog())調用,無參構造方法中一般用於給屬性賦值默認值。

 

public class Dog{

   

    String name;

    int health;

    int love;

    String strain;

   

    public Dog(){

       System.out.println("構造方法");

       health = 100;

       love = 0;

    }

    …

}

 


如果開發中沒有定義無參構造方法,jvm默認給類分配一個無參構造,形如 

public Dog(){

}

 

 

 

1.1.2     有參構造

當構造/實例化一個對象時,可以向構造方法中傳遞參數,這樣的構造方法稱為有參構造。形如:

[修飾符] 類名(Type arg1,Type arg2,…){

    // 初始化代碼

}

 

 

1.1.2.1  局部變量和成員變量優先級

如果在一個作用域中,局部變量和成員變量同名,局部變量的優先級更高。

 1 public class Dog{
 2 
 3    
 4 
 5     String name;
 6 
 7     int health;
 8 
 9     int love;
10 
11     String strain;
12 
13    
14 
15     public Dog(String name,int health,int love,String strain){
16 
17        name = name;
18 
19        health = health;
20 
21        love = love;
22 
23        strain = strain;
24 
25     }
26 
27 }

優化后 

 1 public class Dog{
 2 
 3    
 4 
 5     String name;
 6 
 7     int health;
 8 
 9     int love;
10 
11     String strain;
12 
13    
14 
15     /*
16 
17     public Dog(){
18 
19        System.out.println("構造方法");
20 
21        health = 100;
22 
23        love = 0;
24 
25     }
26 
27     */
28 
29    
30 
31     public Dog(String _name,int _health,int _love,String _strain){
32 
33        name = _name;
34 
35        health = _health;
36 
37        love = _love;
38 
39        strain = _strain;
40 
41     }
42 
43    
44 
45     public void showInfo(){
46 
47        System.out.print("我的名字叫"+name);
48 
49        System.out.print(",健康值"+health);
50 
51        System.out.print(",親密度"+love);
52 
53        System.out.println(",我是一只"+strain);
54 
55     }
56 
57 }

有參構造和無參構造是方法重載關系。 

 

1.1.2.2  有參構造常見問題

如果一個類提供了有參構造方法,jvm不在給類默認分配無參構造。

 

public class Dog{

   

    String name;

    int health;

    int love;

    String strain;

   

    /*

    public Dog(){

       System.out.println("構造方法");

       health = 100;

       love = 0;

    }

    */

 

    public Dog(String _name,int _health,int _love,String _strain){

       name = _name;

       health = _health;

       love = _love;

       strain = _strain;

    }

   

    public void showInfo(){

       System.out.print("我的名字叫"+name);

       System.out.print(",健康值"+health);

       System.out.print(",親密度"+love);

       System.out.println(",我是一只"+strain);

    }

}

Dog dog = new Dog();

dog.name = name;

dog.health = 100;

dog.love = 0;

dog.strain = strain;

 

 

總結:

在開發過程中,如果開發者提供了有參構造方法,一定要習慣性的提供無參構造

 


免責聲明!

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



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