什么是函數簽名呢?
函數簽名(或者類型簽名或方法簽名)定義了函數或方法的輸入與輸出
簽名可包含:
- 參數及參數的類型
- 返回值及其類型
- 可能拋出或傳出的異常
- 該方法在面向對象程序中可用性方面的信息(如public、static或prototype
JavaScript中的簽名
JavaScript是一鍾松散型或動態語言。這意味着你不必提前聲明變量的類型。類型將在程序處理時自動確定。JavaScript中的簽名仍然可以為你提供有關該方法的一些信息:
MyObject.prototype.myFunction(value)
- 該方法是安裝在一個名為MyObject的對象上面。
- 該方法安裝在MyObject的原型上(因此它是一個實例方法),而不是static、或pulic
- 該方法名為myFunction.
- 該方法接受一個參數,該參數被稱為value,並且value沒有進一步定義
C語言中的簽名
C語言中,是一個強類型的語言,在編譯的時候就會被確定:
#include<stdio.h> int total(int x , int y); int total(int x , int y ,int z); int main(){ int sum; sum = total(1,2); sum = total(1,2,3); printf("%d",sum); return 0; } int total(int x,int y){ return x+y; } int total(int x,int y,int z){ return x+y+z; }
- int 表示是一個整型的函數,返回值必須是個整數
- 該函數的名字是total
- 一個有2個參數,一個有三個參數(且參數都為整型)
函數能否被重載,取決於函數簽名:
C語言中函數可以被重載,因為函數簽名有多個,可以重載,而在JavaScript中,函數簽名只有函數名一個簽名,一旦函數名相同,就會按照后來的函數來進行操作,所以JavaScript不能夠被重載。
在java中方法重載與下列因素相關:
下面說說java中的重載:
比如:
public static int sum(int a, int b){ //① return a+b; } public static int sum(int a, int b,int c){ //② return a+b+c; } public static int sum(double a, double b){ //③ return a+b; } public static int sum(int a, double b){ //④ return a+b; }
public static int sum(double a, int b){ //⑤ return a+b; }
這些它們是同一個名字,但是都可以被重載
①和②因為參數個數不同
①和③④因為參數的類型不同
④和⑤因為參數的順序不同
但是我們有下面的則將不會重載
public static int sum(double x, int y){ return a+b; } //參數的名字是無關的,無法被重載 public static double sum(double x, int y){ return a+b+0.5; } //與方法的返回值是無關的,無法被重載
這就是這方面的補充了,寫的有不好的地方,請讀者見諒