new一個對象的時候要用到構造函數,
例如Hello hello = new Hello();這時調用的是Hello的無參數構造方法;
Hello hello = new Hello("hi");這個是調用Hello有參數構造方法,
在JAVA中如果不寫構造方法的話,會默認加上一個無參數的構造方法,但是如果已經有了一個有參數的構造方法,那么無參數的構造方法就不會默認被加上.
如果Hello類中已經有了一個有參數的構造方法,這時再使用Hello hello = new Hello();來創建對象的時候就會出錯
這就是為什么書上要強調寫了有參數的構造方法就最好加一個無參數的構造方法。
區別
有參數的構造方法的主要目的是為類中的屬性初始化的
而無參數的構造方法,可以控制new對象。
--------------------------------------------------------------------------------------------------------------------------------
我生成了一個帶參數的構造函數,但是沒有寫無參的,所以,報錯,修改如下,問題解決
所以安全的辦法就是生成一個有參的,用來new ,生成一個有參的,用來測試,賦值等
所以安全的辦法就是生成一個有參的,用來new ,生成一個有參的,用來測試,賦值等
使用構造器時需要記住:
1.構造器必須與類同名(如果一個源文件中有多個類,那么構造器必須與公共類同名)
2.每個類可以有一個以上的構造器
3.構造器可以有0個、1個或1個以上的參數
4.構造器沒有返回值
5.構造器總是伴隨着new操作一起調用
構造方法: 語法
public 類名(){} (構造方法沒有返回值, 構造方法:一般用於給對象賦初始值)
解決:參數名和 屬性名 相同
-
修改參數名(不推薦)
-
使用this關鍵字
this: 關鍵字
1、指代當前對象
2、指代當前類 *
3、 指代構造方法 this(): 表示當前類的構造方法,只能放在首行