重载 订阅
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 17:45:11
    重载(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、存在于父类和子类、同类中。


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

    万次阅读 多人点赞 2017-02-13 10:17:46
    一、什么是重载重载,从简单说,就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。在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-07-05 13:30:35
    重载的定义: 1.同一个类 2.多个方法的方法名字相同 3.参数列表不同           参数个数不同           参数...

    重载的定义:
    1.同一个类
    2.多个方法的方法名字相同
    3.参数列表不同
              参数个数不同
              参数的数据类型不同
              不同数据类型的参数顺序不同
    方法的重载和修饰符无关
    方法的重载和有无返回值无关
    方法的重载和返回值类型无关
    方法的重载和参数名无关

    方法的重载是一个类中多态的一种体现

    public class Overload {
    	public static void main(String[] args) {
    		getSum(1, 1);//一
    		getSum(2.1,2.2);//二
    		getSum(3.1,3);//三
    		getSum(4,4.4);//四
    		getSum(5,5,5);//五
    	}
    	//求和 2个数的和
    		public static void getSum(int a,int b){//一:求两个int类型的和
    			System.out.println("int a,int b");
    			System.out.println(a+b);
    		}
    		
    		public static void getSum(double a,double b){//二:求两个double类型的和
    			System.out.println("double a,double b");
    			System.out.println(a+b);
    		}
    		public static void getSum(double a,int b){//三:求一个double和一个int类型的和
    			System.out.println("double a,int b");
    			System.out.println(a+b);
    		}
    		
    		public static void getSum(int a,double b){//四:求一个int和一个double类型的和
    			System.out.println("int a,double b");
    			System.out.println(a+b);
    		}
    		public static void getSum(int a,int b,int c){//五:求三个int类型的和
    			System.out.println("int a,int b,int c");
    			System.out.println(a+b+c);
    		}
    }
    
    展开全文
  • 什么是重载

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

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

    千次阅读 2019-04-08 17:32:10
    函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表(参数个数、类型、顺序)的函数,这组函数被称为重载函数。重载函数通常用来声明一组功能相似的函数,这样做减少了函数名的数量,避免了名字...
  • 重载是什么

    2020-05-08 15:48:18
    C++的函数重载机制。实质就是”用同样的名字在定义一个有着不同参数但有着同样用途的函数。(人格分裂,多重身份)注意:可以是参数个数上的不同,也可以是参数数据类型上的不同。 这个例子我们体验到,对函数进行...
  • 方法重载

    千次阅读 2019-05-13 08:30:34
    (1)方法重载概念: 在同一个类中,可以存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。 (2)重载特点: 与返回值无关,只看参数列表。 (3)重载好处: 便于阅读,优化设计。 (4)使用规范 方法名...
  • 重载 * 重载的背景:需求 ,在一个类中,已经实现了两个整数int 求和。那么能不能做两个float类型的求和? * 可以创建新的方法,也可以进行重载。 * 重载的含义:在java中,如果有功能类似,可以使用相同的名字来...
  • JAVA重写和重载的区别

    万次阅读 多人点赞 2018-07-11 22:04:05
    问: Java 重载与重写是什么?有什么区别? 答:  重载(Overload)是让类以统一的方式处理不同类型数据的一种手段,实质表现就是多个具有不同的参数个数或者类型的同名函数(返回值类型可随意,不能以返回...
  • 重载<< >>

    千次阅读 2017-06-07 09:47:19
    其实,>重载了按位移的运算符,并且只能对c++中的标准数据类型进行输入和输出。 如何重载>使它们能输入和输出用户自己定义的类型的数据呢? 对“>”重载的函数形式: 形式: ostream operator 因为由cout它是...
  • C++ 运算符重载

    千次阅读 多人点赞 2018-12-26 21:39:21
    前言 本文引用于“C语言中文网...2. C++重载=(C++重载赋值运算符) 3. C++深拷贝和浅拷贝(C++深复制和浅复制) 4. C++运算符重载为友元函数 5. C++实现可变长度的动态数组 6. C++重载&lt;&lt;和&gt;...
  • C++重载函数

    千次阅读 2017-06-20 21:12:15
    这就是重载函数。重载函数常用来实现功能类似而所处理的数据类型不同的问题。函数重载有什么好处? 重载函数通常用来命名一组功能相似的函数,这样做减少了函数名的数量,避免了名字空间的污染,对于程序的可读性...
  • 函数重载

    万次阅读 2016-06-27 17:27:58
    1、什么是函数重载???  在同一个作用域中,如果有多个函数的名字相同,但是形参列表不同(参数类型不同或参数个数不同),返回值类型可同也可不同,我们称之为重载函数。重载的函数是通过形参列表区分的,与...
  • C++函数重载

    千次阅读 2017-07-10 17:43:05
    一、函数重载的概念: 通俗的讲:重载就是一个词有多种不同的含义。在C++程序中,将语义、功能相似的几个函数用同一个名字来表示,即为函数名重载。二、函数重载的作用: 1、函数重载便于记忆,提高了函数的易用性...
  • C++的重载操作符(operator)介绍

    万次阅读 多人点赞 2018-06-11 16:40:12
    本文主要介绍C++中的重载操作符(operator)的相关知识。 1. 概述 1.1 what operator 是C++的一个关键字,它和运算符(如=)一起使用,表示一个运算符重载函数,在理解时可将operator和运算符(如operator=)...
  • 重载

    千次阅读 2017-06-07 20:15:37
    实质:重载的实质就是写一个重载函数 语法:函数类型 operator 运算符名称 {对运算符的重载处理} 说明:如果要对加号进行重载,则 “operator +” 就是函数名。 方法: (1)成员函数法 定义:把运算符重载的函数...
  • C++运算符重载详解

    万次阅读 多人点赞 2016-03-02 20:45:08
    为什么要对运算符进行重载: C++预定义中的运算符的操作对象只局限于基本的内置数据类型,但是对于我们自定义的类型(类)是没有办法操作的。但是大多时候我们需要对我们定义的类型进行类似的运算,这个时候就需要...
  • C++ 函数重载碰到默认的参数

    万次阅读 2020-07-05 14:05:19
    //引用作为重载的条件 void func(int &a) { //非常量引用 cout << " this is func" << endl; } void func(const int &a) { // 常量引用 const int &a = 10; 合法 cout << "c.

空空如也

1 2 3 4 5 ... 20
收藏数 658,670
精华内容 263,468
关键字:

重载