函数重载

函数重载英語:),是AdaC++C#、D和Java编程语言中具有的一项特性,这项特性允许创建数项名称相同但输入输出类型或个数不同的子程序,它可以简单地称为一个单独功能可以执行多项任务的能力。

函数重载规律

Java中的函数重载

支持函数重载。当多个同名函数的形式参数的数据类型不同或数量不同时,就构成了函数的重载。[1][2]

public class Test{
    public void A(){                //这是一个无形式参数名称为A的函数。
        
    }
    public void A(int a){           //这个函数有一个数据类型为int的函数,函数数目不同,故构成重载。
        
    }
    public void A(String a){        //这个函数数据类型为String,形式参数的数据类型不同,故构成重载。
        
    }
    public void A(int a,int b){     //这个函数有两个形式参数,故构成重载。
        
    }
    public int A(int a,String b){    //这个函数的第二个形式参数的数据类型与上一个函数的数据类型不同,故构成重载。
        /*
        重载的函数的返回值可以不同,但是如果两个或多个函数只有返回值不同,不足以构成重载。
        */
    }
}

构造器重载

Java

中的构造器可以重载,重载方式与普通函数的重载方法一样,唯一不同的就是返回值不可以更改。[3]

注意事项

对于名字屏蔽,C++规定不存在跨作用域()的名字重载。即内层作用域的函数名字将屏蔽掉外层作用域的同名函数名字。

C++子类型的成员函数名将屏蔽其基类型的同名成员函数名,即被继承类与派生类的同名成员函数名不构成函数名重载。除非在子类型中用using关键字显式引入基类型的成员函数名。

class B {
public:
    void f(int i);
};
 
class D : public B {
public:
    using B::f;
    void f(double d);
};

另见

参考

  1. . www.runoob.com. [2018-08-09]. (原始内容存档于2020-08-20).
  2. . www.yiibai.com. [2018-08-09]. (原始内容存档于2018-08-09).
  3. . www.jb51.net. [2018-08-09]. (原始内容存档于2018-08-09) (中文(中国大陆)‎).

外部链接

  • Bertrand Meyer: Overloading vs Object Technology, in Journal of Object-Oriented Programming (JOOP), vol. 14, no. 4, October-November 2001, available online 页面存档备份,存于
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.