函数签名的概念

什么是函数签名呢?

函数签名(或者类型签名或方法签名)定义了函数或方法的输入与输出

签名可包含:

  •  参数及参数的类型
  •    返回值及其类型
  •    可能抛出或传出的异常
  •    该方法在面向对象程序中可用性方面的信息(如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;  
}                //与方法的返回值是无关的,无法被重载

 

这就是这方面的补充了,写的有不好的地方,请读者见谅

 

posted @ 2020-07-10 22:26  junlebao  阅读(7450)  评论(0编辑  收藏  举报