Java構造方法和方法重載詳解
類的結構包括 :
1. 成員變量
2. 成員方法
3. 構造方法
4. 代碼塊
5. 內部類
第一 構造方法的作用
主要有以下三方面的作用:
(1)在構造方法中為創(chuàng)建的對象初始化賦值
(2)在創(chuàng)建一個對象的時候,至少需要調用一個構造方法
(3)每一個類都有構造方法
一個例子加深對以上三條的理解
public class Car{ String name; String color; float price; }
上一篇文章已經講解過 name , color , price 三個都是類的成員變量,我們再創(chuàng)建一個類TextCar用來測試. 舉個例子,現(xiàn)在先記住:
Car bm = new Car();
這句代碼中Car()就是構造方法.所以也說明了(2)在創(chuàng)建一個對象的時候,至少需要調用一個構造方法.
public class TextCar{ public static void main(String [] args){ Car bm = new Car(); //給Car類創(chuàng)建(new)了一個對象 System.out.println(bm.name); } }
在main方法中未對name賦值,但運行結果如下:
不難發(fā)現(xiàn),程序可以正常run并且name的值為null . 其實構造方法為成員變量賦了初值,即(1)的為創(chuàng)建的對象初始化賦值.構造方法賦初值如 : int類型 初值:0 , double類型 初值:0.0 ,String類型 初值 null 等等(常用的了解一下).
在public class Car{ } 這個類中看到的只有成員變量,沒有成員方法,更沒有看到構造方法. 其實,是因為我們沒有顯示的寫書構造方法,類里面有一個隱式的默認的構造方法:
public class Car{ String name; String color; float price; public Car(){ //默認的構造方法,也可以顯示的寫出來 this.name = null; this.color = null; this.price = 0.0; } }
public Car(){ }有這樣一個隱式的無參的構造方法,只不過在上面的代碼中,我們顯示的寫出來了,這也解釋了 (3)每一個類都有構造方法.
到這里構造方法的知識點就梳理完了,歡迎大家評論區(qū)補充~
第二 構造方法的特點
構造方法的特點如下:
(1)名稱和類名相同(這一點需要牢記)
(2)沒有返回值
(3)不需要用void來修飾
public class Car{ //里面有一個默認的無參構造方法Car(){ } }
Car類里面的默認無參構造方法的名稱也叫Car().
我們也可以定義有參的構造方法,如果定義一個有參的構造方法會把默認的構造方法覆蓋掉.例如:
public class Car{ String name; String color; float price; public Car(String name,String color,float price){ this.name = name; this.color = color; this.price = price; } }
此時默認的無參構造方法被覆蓋掉.
如果剛開始接觸java,對 this. 不理解,看一下這一段的簡單解釋:this表示的是對應的對象,一定可以在main方法中找到對應的對象如上一段的代碼,一定可以找到這樣的對象 : Car bm = new Car("寶馬","黑色",5000000);(參量只要類型確定,想寫什么讀者隨意),this就指的是這個對象, this . 后面的name表示的是Car類的成員變量name , 等號右邊的name表示該構造方法的參數(shù)name.其余變量同理.最后,如果你覺得不好理解,可以把參數(shù)換個名字,如a,左邊的this . 就可以去掉.但this的使用一定要會.
來一個完整的簡單的代碼,讀者自己敲一下,然后給自己講一下,就完全理解啦~
public class Car{ String name; String color; float price; public Car(String name,String color,float price){ this.name = name; this.color = color; this.price = price; } public run(){ //成員方法 System.out.println("汽車行駛"); } } public class TextCar{ public static void main(String [] args){ Car bm = new Car("寶馬","紅色",500000); //給Car類創(chuàng)建(new)了一個對象 System.out.println(bm.name+" "+bm.color+" "+500000); bm.run(); } }
方法重載
1.重載有什么特點
(1)在一個類中有多個方法名稱相同的現(xiàn)象
(2)構造方法和成員方法都可以重載
(3)通過參數(shù)的個數(shù),類型,類型的順序進行區(qū)分是否為同一方法
方法重載涉及到一個覆蓋的問題,如果重新定義傳參的構造方法,需要把默認的無參構造方法顯示的寫出來,因為默認的已經被重載的覆蓋掉,調用Car()時會報錯!例如:
public Car(String name,String color,float price){ this.name = name; this.color = color; this.price = price; public Car(String name,String color,float price){ this.name = name; this.color = color; this.price = price; } public run(String name,String color){ //成員方法 System.out.println(this.color+this.name+"汽車行駛"); } public run(String color,String name){ System.out.println(this.color+this.name+"汽車行駛"); } public int run(String name){ System.out.println(this.name+"汽車行駛"); return 0; } } public class TextCar{ public static void main(String [] args){ Car dz = new Car();//創(chuàng)建了一個對象 System.out.println(dz.name); Car bm = new Car("寶馬","紅色",500000); //創(chuàng)建了一個對象 System.out.println(bm.name+" "+bm.color+" "+500000); bm.run("紅色","寶馬"); bm.run("寶馬"); } }
因為Car()這個無參構造方法已經被有參的Car(String name,String color,float price)覆蓋,new Car()時找不到無參構造方法.需要我們顯示得把Car()定義出來才可以.
方法的重載,在Car類中有Car同名的構造方法,run()同名的構造方法,在類中使用重名的方法就是方法的重載,如果兩個方法的名字和參數(shù)類型,數(shù)量,順序都相同是不可以的,同名的方法需要考方法的參數(shù)類型,數(shù)量和順序區(qū)分開來
總結
到此這篇關于Java構造方法和方法重載詳解的文章就介紹到這了,更多相關Java構造方法 方法重載內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
eclipse的web項目實現(xiàn)Javaweb購物車的方法
這篇文章主要介紹了eclipse的web項目實現(xiàn)Javaweb購物車的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-10-10關于BeanUtils.copyProperties(source, target)的使用
這篇文章主要介紹了關于BeanUtils.copyProperties(source, target)的使用說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06