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; |
總結:
在開發過程中,如果開發者提供了有參構造方法,一定要習慣性的提供無參構造。