重载_重载 重写 - CSDN
重载 订阅
overload可直译为重载,它是指我们可以定义一些名称相同的方法,通过定义不同的输入参数来区分这些方法,然后再调用时,VM就会根据不同的参数样式,来选择合适的方法执行。overload最常见于java的编写过程中,是面向对象程序设计(Object Oriented Programming)的特性之一。 展开全文
overload可直译为重载,它是指我们可以定义一些名称相同的方法,通过定义不同的输入参数来区分这些方法,然后再调用时,VM就会根据不同的参数样式,来选择合适的方法执行。overload最常见于java的编写过程中,是面向对象程序设计(Object Oriented Programming)的特性之一。
信息
注    意
用重载时只能通过不同的参数样式
外文名
overload
中文名
重载
解    释
我们可以定义一些名称相同的方法
overload注意事项
1、在使用重载时只能通过不同的参数样式。例如,不同的参数类型,不同的参数个数,不同的参数顺序(当然,同一方法内的几个参数类型必须不一样,例如可以是fun(int, float), 但是不能为fun(int, int));2、不能通过访问权限、返回类型、抛出的异常进行重新加载;3、方法的异常类型和数目不会对重新加载造成影响;4、对于继承来说,如果某一方法在父类中是访问权限是private,那么就不能在子类对其进行重载,如果定义的话,也只是定义了一个新方法,而不会达到重载的效果。
收起全文
精华内容
参与话题
  • 重载

    2019-05-17 10:51:03
    重载函数调用符号(operator()) 把类对象像函数名一样使用。仿函数(functor),就是使一个类的使用看上去象一个函数。其实现就是类中实现一个operator(),这个类就有了类似函数的行为,就是一个仿函数类了。 class ...
    重载函数调用符号(operator())

    把类对象像函数名一样使用。仿函数(functor),就是使一个类的使用看上去象一个函数。其实现就是类中实现一个operator(),这个类就有了类似函数的行为,就是一个仿函数类了。

    class 类名 { 返值类型 operator()(参数类型) 函数体 }

    #include <iostream>
    using namespace std;
    class Test {
    public:	
    	int operator()(int a) {
    		return a*a;
    	}
    	double operator()(double b) {
    		return b*b;
    	}
    };
    void main() {	
    	Test test;
    	int x = test(5);
    	double y = test(3.14);
    	cout << "x=" << x << endl;
    	cout << "y=" << y << endl;
    

    执行代码得出以下结果:
    在这里插入图片描述

    不可以重载的&&和||操作符
    #include <iostream>
    using namespace std;
    class Test {
    public:	
    	Test(int a) {
    		this->a = a;
    	}
    	Test operator+(Test T) {
    		cout << "执行+重载函数" << endl;
    		Test temp(a = a + T.a);
    		return temp;
    	}
    	bool operator&&(Test T) {
    		cout << "执行&&重载函数" << endl;
    		return a && T.a;
    	}	
    private:
    	int a;
    };
    void main() {	
    	int a = 1;
    	int b = 2;
    	if (a&&(a+b))//&& 与:两个条件中,两个同时为真,则结果为真,否则为假;
    	{
    		cout << "有一个是假,则不在执行下一个表达式的计算" << endl;
    	}
    	Test test1(1);
    	Test test2(2);
    	if (test1&&(test2+test1))
    	{		
    		test1.operator&&(test1.operator+(test2));
    		cout << "&&的结合顺序是从左向右的,可它先执行了+" << endl;
    	}
    }
    

    在这里插入图片描述

    C++中如果重载&&或者||会无法实现短路规则:

    (表达式1)&&(表达式2) 如果表达式1为假,则表达式2不会进行运算,即表达式2“被短路”
    (表达式1)||(表达式2) 如果表达式1为真,则表达式2不会进行运算,即表达式2“被短路”
    逻辑运算符运算规则:
    && 与:两个条件中,两个同时为真,则结果为真,否则为假;
    || 或:两个条件中,至少有一个为真,则结果为真,否则为假;

    展开全文
  • 重载与重写的区别

    万次阅读 多人点赞 2017-02-15 20:38:18
    重载(Overloading)  方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。 重载Overloading是一个类中多态性的一种表现。  Java的方法重载,就是在类中...

    重载(Overloading)

     方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。

    重载Overloading是一个类中多态性的一种表现。

     Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。

    调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。

     重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准。


    父类方法被默认修饰时,只能在同一包中,被其子类被重写,如果不在同一包则不能重写。

    类的方法被protoeted时,不仅在同一包中,被其子类被重写,还可以不同包的子类重写。

     

    重写方法的规则

    1)、参数列表必须完全与被重写的方法相同,否则不能称其为重写而是重载。

    2)、返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载。

    3)、访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)

    4)、重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常。例如:

    父类的一个方法申明了一个检查异常IOException,在重写这个方法是就不能抛出Exception,只能抛出IOException的子类异常,可以抛出非检查异常。

     

    而重载的规则:

    1)、必须具有不同的参数列表;

    2)、可以有不同的返回类型,只要参数列表不同就可以了;

    3)、可以有不同的访问修饰符;

    4)、可以抛出不同的异常;


    重载和重写(覆盖)的特点:


    1. Override 特点

      1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果;

      2、覆盖的方法的返回值必须和被覆盖的方法的返回一致;

      3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类;

      4、被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。

    2.Overload 特点

      1、在使用重载时只能通过不同的参数样式。例如,不同的参数类型,不同的参数个数,不同的参数顺序(当然,同一方法内的几个参数类型必须不一样,例如可以是fun(int, float), 但是不能为fun(int, int));

      2、不能通过访问权限、返回类型、抛出的异常进行重载;

      3、方法的异常类型和数目不会对重载造成影响;

      4、对于继承来说,如果某一方法在父类中是访问权限是priavte,那么就不能在子类对其进行重载,如果定义的话,也只是定义了一个新方法,而不会达到重载的效果。



    总结:

    override(重写)

       1、方法名、参数、返回值相同。

       2、子类方法不能缩小父类方法的访问权限。

       3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。

       4、存在于父类和子类之间。

       5、方法被定义为final不能被重写。

     overload(重载)

      1、参数类型、个数、顺序至少有一个不相同。 

      2、不能重载只有返回值不同的方法名。

      3、存在于父类和子类、同类中。


    展开全文
  • 什么是重载重载的作用?

    万次阅读 多人点赞 2019-12-17 21:32:09
    一、什么是重载重载,从简单说,就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。在java中同一个类中的2个或2个以上的方法可以有...

    一、什么是重载?

    重载,从简单说,就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。在java中同一个类中的2个或2个以上的方法可以有同一个名字,只要它们的参数声明不同即可。这种情况下,该方法就被称为重载,这个过程称为方法重载 ,通俗的讲就是省了给method命名了.差不多的都用一个.

    例如:

      public class OverloadDemo {
           void test(){                                   //test()方法第一次重载,没有参数
                  System.out.println("No parameters");
           }
           void test(int a){                             //test()方法第二次重载,一个整型参数
                  System.out.println("a: "+a);
           }
           void test(int a,int b){                        //test()方法第三次重载,两个整型参数
                  System.out.println("a and b: "+a+" "+b);
           }
           double test(double a){                     //test()方法第四次重载,一个双精度型参数
                  System.out.println("double a: "+a);
                  return a*a;                              //返回a*a的值
           }
    }

    结果:

     public class Overload {
           public static void main(String args[]){
                  OverloadDemo ob=new OverloadDemo();
                  double result;
                  ob.test();            //定义的是test()方法
                  ob.test(10);             //定义的是test(int a)方法
                  ob.test(10,20);            //定义的是test(int a,int b)方法
                  result=ob.test(123.23);       //定义的是test(double a)方法
                  System.out.println("result of ob.test(123.23): "+result);   //输出result的值
           }
    }
    运行结果:    No parameters
    a: 10
    a and b: 10 20
    double a: 123.23
    result of ob.test(123.23): 15185.6329

     

    二、重载的作用?

     1. 方法重载的主要好处就是,不用为了对不同的参数类型或参数个数,而写多个函数。多个函数用同一个名字,但参数表,即参数的个数或(和)数据类型可以不同,调用的时候,虽然方法名字相同,但根据参数表可以自动调用对应的函数。如果我们使用reflector去查看微软写的.net的基类库的话,我们可以发现他使用很多的方法重载,这样我们在调用的时候,就不需要记那么多的方法名称,而是知道了方法的功能就可以直接的给他传递不同的参数,编译器会明确的知道我们调用了哪一个方法。重载比if...else要优雅,减少了if...else部分的代码。

     2. 重载的最直接作用是方便了程序员可以根据不同的参数个数,顺序,类型,自动匹配方法,减少写过个函数名或方法名的重复步骤。

    展开全文
  • 什么是重载

    千次阅读 2019-03-17 12:37:23
    重载,简单说,就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。 来自:https://baike.baidu.com/item/重载/2282654?fr=aladdin ...

    重载,简单说,就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。

    来自:https://baike.baidu.com/item/重载/2282654?fr=aladdin

    展开全文
  • 重载的定义

    千次阅读 2019-07-05 13:30:35
    重载的定义: 1.同一个类 2.多个方法的方法名字相同 3.参数列表不同           参数个数不同           参数...
  • “++” 和 “--” 的重载

    千次阅读 2019-01-11 23:07:06
      在 C++ 2.1 之前的版本在重载“++”(或“–”)时,不能显式地区分是前缀方式还是后缀方式。也就是说,下面的两条语句是完全相同的: ob++; ++ob;   在 C++ 2.1 及以后的版本中,C++ 编译器可以通过在...
  • 【C++】C++中函数重载的理解

    万次阅读 多人点赞 2018-06-25 15:58:49
    我们在平时写代码中会用到几个函数但是他们的实现功能相同,但是有些细节却不同。例如:交换两个数的值其中包括(int, float,char,double)这些个类型。在C语言中我们是利用不同的函数名来加以区分。...
  • Java重载与重写

    千次阅读 2019-04-18 18:10:02
    重载 方法重载 每个重载的方法都必须有一个独一无二的参数类型列表。 对于名字相同的方法的方法,除了参数类型的差异以外,*参数的顺序不同也可以区分两个方法。 public class OverloadingOrder { static void f...
  • JAVA重写和重载的区别

    万次阅读 多人点赞 2019-08-27 22:07:23
    问: Java 重载与重写是什么?有什么区别? 答:  重载(Overload)是让类以统一的方式处理不同类型数据的一种手段,实质表现就是多个具有不同的参数个数或者类型的同名函数(返回值类型可随意,不能以返回...
  • 重载 * 重载的背景:需求 ,在一个类中,已经实现了两个整数int 求和。那么能不能做两个float类型的求和? * 可以创建新的方法,也可以进行重载。 * 重载的含义:在java中,如果有功能类似,可以使用相同的名字来...
  • 重写、覆盖、重载、多态几个概念的区别分析

    万次阅读 多人点赞 2009-02-01 21:06:00
    override->重写(=覆盖)、overload->重载、polymorphism -> 多态 override是重写(覆盖)了一个方法,以实现不同的功能。一般是用于子类在继承父类时,重写(重新实现)父类中的方法。重写(覆盖)的规则: 1、重写...
  • 同一个类中的2个或2个以上的方法可以一同一个名字,只是它们的参数声明不同即可,在这种情况下,该方法就被称为重载,这个过程称为方法重载。 构造方法可以重载
  • myBatis mapper接口方法重载问题

    万次阅读 2015-07-31 17:29:06
    myBatis mapper接口方法重载 后,时不能使用重载方法进行相关映射的。即最好不要在mapper接口中使用重载方法,不然会出现异常。
  • 构造函数可以被重载,因为构造函数可以有多个且可以带参数。 析构函数不可以被重载,因为析构函数只能有一个,且不能带参数。
  • C++的运算符重载

    万次阅读 多人点赞 2019-05-02 10:12:54
    1.作为新手学习C++的运算符重载,首先应该了解C++的运算符重载有何现实意义? 之前已对多态性有了相关总结,得出结论:函数重载体现出多态性。实际上,运算符重载也体现出了多态性。在C++中我们定 义的int、float...
  • layui 数据表格的重载问题

    万次阅读 2018-03-30 17:26:15
    &lt;button class='layui-...dicTable = table.render({ //渲染表格})//表格重载dicTable.reload({ page:{ curr:1 }, where:{重载条件查询,键值对形式}})这样是错误的, button标签自带事件,不会完成重载...
  • Java方法重载

    万次阅读 多人点赞 2018-06-03 23:56:35
    在Java中,同一个类中的多个方法可以有相同的方法名称,但是有不同的参数列表,这就称为方法重载(method overloading)。参数列表又叫参数签名,包括参数的类型、参数的个数、参数的顺序,只要有一个不同就叫做参数...
  • 定义:一个类中含两个以上同名的方法,他们之间就构成重载 特点: 1、必须是两个以上同名的方法 2、方法之间的参数组合必须不同(参数的数目不同或者参数的类型不同) 3、方法的返回值不能作为判断方法之间是否构成...
  • C++中哪些运算符不可重载

    万次阅读 2016-09-07 09:41:54
    几乎所有的运算符都可用作重载。具体包含: 算术运算符:+,-,*,/,%,++,–; 位操作运算符:&,|,~,^,,>> 逻辑运算符:!,&&,||; 比较运算符:<,>,>=,,==,!=; 赋值运算符:=,+=,-=,*=,/=,%=,&=,|=,^=,,>>=; ...
  • C语言实现函数重载

    万次阅读 2018-11-24 15:03:51
    C语言实现函数重载 c语言中不允许有同名函数,因为编译时函数命名是一样的,不像c++会添加参数类型和返回类型作为函数编译后的名称,进而实现重载。如果要用c语言显现函数重载,可通过以下方式来实现: 使用函数...
1 2 3 4 5 ... 20
收藏数 624,999
精华内容 249,999
关键字:

重载