Java学习3之成员方法及函数重载
方法的定義:方法名稱,返回值,參數列表,修飾符(權限修飾符,final,static),實現體。
參考自:《Java 程序設計與工程實踐》
方法的簽名:
唯一區別其他方法的元素:(1)方法名稱;(2)參數類型列表(參數順序和類型)。這就是方法的簽名。
方法的簽名不包括方法的返回值。雖然每個重載方法可以有不同的返回類型,但返回類型并不足以區分所使用的是哪個方法。
example:(1)public void on(){}
public int on(){};這樣兩個方法編譯器依然認為是相同的方法,不可以同時定義在一個類中。
(2)pubic void on(){}
private void on(){};方法的修飾符不同,但編譯器認為是相同的方法,不可以定義在同一個類中。
(3)public void on(int a,int b){}
public void on(int b,int a){};僅僅是參數名稱不同。
?
重載:
一個類中相同方法名但參數類型列表不同的方法,即可稱為重載。
example:public class Light{
public void on(){}
public void on(int color){}
}
重載技術實際上更多是因為抽象和描述問題的需要存在的。如果都是開燈,但是僅僅是因為具體細節不同,而要申明多個不同名稱的函數,這樣整個代碼的可讀性就變差了。
example:
常用在控制臺中打印符號的System.out.println()打印函數。它有多種重載。
public void println();
public void println(boolean x);
public void println(char x);等等。
example:
構造函數使用重載函數,它可能是產生重載技術的原因。
public class Light{
public Light(){}
public Light(int color){}
public static void main(String[] args){
Light light = new Light();
Light light = new Light(10);}
}
new對象的時候,后面必須是類的名稱,再后面的括號表示調用構造函數,函數的參數類型列表唯一區分了調用的構造函數。
?
函數重載的設計問題:
重載不用刻意使用,在設計和編程過程中自然而然就會想到根據功能定義行為的名稱,相同功能的行為自然就定義相同的函數名稱。
example:
功能類似,函數接受的參數也相同。
public void on(int color);
public void on(int wattage);
在函數簽名上看似相同,但編譯器無法區分這兩個函數,出現編譯錯誤。
解決:將其中一個函數改名;
?
?
轉載于:https://www.cnblogs.com/benbencoding798/p/4726343.html
總結
以上是生活随笔為你收集整理的Java学习3之成员方法及函数重载的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql,int(5)、int(10)
- 下一篇: 线程学习笔记(一)