1.3(java学习笔记)构造方法及重载
構(gòu)造方法,用于對象的初始化,在創(chuàng)建對象時被自動調(diào)用的特殊方法。構(gòu)造方法名稱與類名一致,通過new調(diào)用。
下面通過代碼來詳細(xì)講解
1 public class Point { 2 int x, y; 3 public Point(int _x, int _y){ 4 x = _x; 5 y = _y; 6 } 7 8 9 public double getDistance(Point p){ 10 return Math.sqrt(Math.pow((double)(p.x), 2) + Math.pow((double)(p.y), 2)); 11 } 12 13 public static void main(String args[]){ 14 Point n = new Point(3, 4);15 System.out.println(n.getDistance(p)); 16 } 17 }
首先構(gòu)造方法與類名一致,主要用于對象初始化用new調(diào)用,構(gòu)造方法會自動返回對象,故最后不能加return (對象)。
?
這里大家可能會有疑問
1.這個和之前創(chuàng)建好了一個類(public class point{....}),然后直接Point n = new Point(); 的區(qū)別,
2.構(gòu)造方法和類名稱相同創(chuàng)建類的時候到底是哪一個?
這里要補充一點
如果我們沒有定義構(gòu)造器,則編譯器會自動定義一個無參的構(gòu)造函數(shù)。如果已定義則編譯器不會自動添加。
下面代碼來說明這個問題
1 public class Point { 2 int x, y; 3 Public Point(); //這時我們平常創(chuàng)建類及對象的形式,沒有定義構(gòu)造方法,編譯器會自動定義一個無參的構(gòu)造函數(shù)。//這里面隱含了一個構(gòu)造函數(shù),是編譯器自動添加的,只是不顯示出來。 4 public static void main(String args[]){ 5 Point p = new Point(); 6 7 } 8 }
?
所以我們?nèi)绻诶锩嫖覀冏约涸陬惱锩嫣砑恿艘粋€有參的構(gòu)造方法,那么對象初始化時使用的就是那個有參的構(gòu)造方法。
可能這里大家會問,那我初始化時用那種無參的方法初始化可不可以,答案是不行的,因為之前說了“如果我們沒有定義構(gòu)造器,則編譯器會自動定義一個無參的構(gòu)造函數(shù)。如果已定義則編譯器不會自動添加。”,我們在里面定義了一個有參的構(gòu)造方法,所以編譯器不會幫我們自動添加無參的構(gòu)造方法。這時如果你想用無參的構(gòu)造方法初始化則需要再定義一個無參的構(gòu)造方法。
例如
1 public class Point { 2 int x, y; 3 public Point(int _x, int _y){ 4 x = _x; 5 y = _y; 6 } 7 public Point(){ 8 9 } 10 11 public double getDistance(Point p){ 12 return Math.sqrt(Math.pow((double)(p.x), 2) + Math.pow((double)(p.y), 2)); 13 } 14 15 public static void main(String args[]){ 16 Point p = new Point(3, 4); 17 Point n = new Point(); 18 System.out.println(n.getDistance(p)); 19 System.out.println(p.getDistance(p)); 20 } 21 }這樣就既可以創(chuàng)建有參也可以創(chuàng)建無參的,大家這里可能又會有疑問,這里面有兩個構(gòu)造方法名稱都相同,初始化時到底是哪一個方法?
這里就涉及到另外一個概念“重載”,重載就是編譯器會根據(jù)函數(shù)參數(shù)的個數(shù),類型自動選擇合適方法。
上圖代碼中的對象p的初始化方法中有兩個參數(shù),編譯器會在兩個Point方法中尋找合適的方法去執(zhí)行,同樣對n進(jìn)行初始化的方法沒有參數(shù),編譯器也會根據(jù)參數(shù)類型,個數(shù)去選擇合適的方法。
?
java中函數(shù)的重載和這類似
構(gòu)成重載的條件
方法名相同,參數(shù)個數(shù)不同,構(gòu)成重載。
方法名相同,參數(shù)類型不同,構(gòu)成重載。
方法名相同,參數(shù)類型相同,參數(shù)個數(shù)相同,返回值不同,不構(gòu)成重載。
簡而言之,就是編譯器根據(jù)參數(shù)個數(shù)類型,尋找對應(yīng)方法時應(yīng)具有唯一性。
?
轉(zhuǎn)載于:https://www.cnblogs.com/huang-changfan/p/9304030.html
總結(jié)
以上是生活随笔為你收集整理的1.3(java学习笔记)构造方法及重载的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tp剩余未验证内容-7
- 下一篇: 2018-7-9