1.構造方法是一種特殊的方法,專門用於構造/實例化對象,構造方法根據是否有參數分爲無參構造和有參構造jvm
無參構造優化
無參構造方法就是構造方法沒有任何參數。構造方法在建立對象(new Dog())調用,無參構造方法中通常用於給屬性賦值默認值。spa
public class Dog{對象
String name;blog int health;ci int love;作用域 String strain;開發
public Dog(){table System.out.println("構造方法");class health = 100; love = 0; } … } |
若是開發中沒有定義無參構造方法,jvm默認給類分配一個無參構造,形如
public Dog(){ } |
有參構造
當構造/實例化一個對象時,能夠向構造方法中傳遞參數,這樣的構造方法稱爲有參構造。
1. 局部變量和成員變量優先級
若是在一個做用域中,局部變量和成員變量同名,局部變量的優先級更高。
public class Dog{
String name; int health; int love; String strain;
public Dog(String name,int health,int love,String strain){ name = name; health = health; love = love; strain = strain; } } |
優化後
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); } } |
有參構造和無參構造是方法重載關係。
1. 有參構造常見問題
若是一個類提供了有參構造方法,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; |
|
總結:
在開發過程當中,若是開發者提供了有參構造方法,必定要習慣性的提供無參構造。