重载与覆盖有什么区别?

举例说明

1.定义区别:

①重载是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同。调用的时候根据函数的参数来区别不同的函数。

②覆盖(也叫重写)是指在派生类中重新对基类中的虚函数(注意是虚函数)重新实现。即函数名和参数都一样,只是函数的实现体不一样。

2.类的关系区别

覆盖是子类和父类之间的关系,是垂直关系;重载是同一个类中方法之间的关系,是水平关系。

3.产生方法区别

覆盖只能由一个方法或只能由一对方法产生关系;重载是多个方法之间的关系。

4.参数列表要求区别

覆盖要求参数列表相同;重载要求参数列表不同。

5.调用方法区别

覆盖关系中,调用方法体是根据对象的类型来决定;而重载关系是根据调用时的实参表与形参表来选择方法体的。

参考资料:百度百科-重载

参考资料:百度百科-重写

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2019-08-01

重载与覆盖的区别如下:

一、定义不同:

覆盖意思是指遮盖、掩盖,也指空中某点发出的电波笼罩下方一定范围的地面。

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

二、关系不同

1、覆盖是子类和父类之间的关系,是垂直关系;

2重载是同一个类中方法之间的累加,是水平关系。

三、方法的数量不同

1、覆盖只能由一个方法,或只能由一对方法产生关系;

2、重载是多个方法之间的关系。

四、参数不同

1、覆盖要求参数列表相同。

2、重载要求参数列表不同。

扩展资料

重载是可使函数、运算符等处理不同类型数据或接受不同个数的参数的一种方法,关于重载一词在词义上有两种不同的说法:

1、多态:重载是一种多态(如C++,Java),有四种形式的多态:

虚函数多态、模板多态、重载、转换

2、覆盖:

重载(overloaded)和多态关系不大,真正和多态相关的是覆盖。

当派生类重新定义了基类的虚拟方法后,基类根据赋给它的不同的派生类引用,动态地调用属于派生类的对应方法,这样的方法调用在编译期间是无法确定的。因此,这样的方法地址是在运行期绑定的(动态绑定)。

重载只是一种语言特性,是一种语法规则,与多态无关,与面向对象也无关。

不过针对所谓的第二种重载,有一个专门的名词--重写或重定义。重载与重写的区别就在于是否覆盖,重写一般多发生在不同的类且存在继承关系之间,而重载多是在一个类里或者一块代码段里。

参考资料:百度百科-重载

百度百科-覆盖

本回答被网友采纳
第2个回答  2012-12-06
重载一般在同一个类中发生,方法名字相同但参数类型与个数不同,返回类型与修饰符也可以不同。方法重写发生在父类与子类之间,两个类存在继承关系,方法重写时方法的定义(修饰符,返回类型,参数列表)必须相同,只是方法体(方法实现)不同。
第3个回答  2010-05-31
这是我自己写的,不是复制别人的.!

重载是一个类里面,函数名相同但参数列表不同的函数.如
class A
{
void show(); //#1
void show(int a); //#2
void show(double a); //#3
}
#2重载#1,参数列表不同处在于个数不同,而#3重载#2,参数列表不同处在于类型不同.

而覆盖是指派生类重写了基类的函数,C++,C#要指出是虚函数,JAVA不用.
class animal
{
virtual void show(){cout<<"我是动物";}
}
class dog : animal
{
virtual void show(){cout<<"我是狗";}
}
dog派生类重写了基类的show()方法,这是要实现多态!
第4个回答  2010-05-31
public class A {
public void test() {
System.out("父类方法");
}

//重载
public void test(int n) {
System.out.println("这是重载方法");
}
}

public class B extends A {

//覆盖
public void test() {
System.out.println("这里覆盖了父类的test()方法");
}

//重载
public void test(Sting s) {
System.out.println("这也是是重载方法");
}
}

重载与覆盖有什么区别?
覆盖是子类和父类之间的关系,是垂直关系;重载是同一个类中方法之间的关系,是水平关系。3.产生方法区别 覆盖只能由一个方法或只能由一对方法产生关系;重载是多个方法之间的关系。4.参数列表要求区别 覆盖要求参数列表相同;重载要求参数列表不同。5.调用方法区别 覆盖关系中,调用方法体是根据对象的类...

重载与覆盖有什么区别?
1、覆盖是子类和父类之间的关系,是垂直关系;2重载是同一个类中方法之间的累加,是水平关系。三、方法的数量不同 1、覆盖只能由一个方法,或只能由一对方法产生关系;2、重载是多个方法之间的关系。四、参数不同 1、覆盖要求参数列表相同。2、重载要求参数列表不同。

简述重载与覆盖的区别?
方法重载与覆盖的区别重载与覆盖的区别 1、方法的覆盖是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系。 2、覆盖只能由一个方法,或只能由一对方法产生关系;方法的重载是多个方法之间的关系。 3、覆盖要求参数列表相同;重载要求参数列表不同。 4、覆盖关系中...

覆盖与重载的关系是
覆盖只能发生在父类与子类之间,而重载可以发生在同一个类中。我具体说一下重载与重写的区别:一、重写(override)override是重写(覆盖)一个方法,以实现不同的功能。一般是用于子类在继承父类时,重写(重新实现)父类中的方法。重写(覆盖)的规则:1、重写方法的参数列表必须完全与被重写的方法的...

Java中覆盖和重载的区别
Java中覆盖和重载的区别如下:override 可以翻译为覆盖,从字面就可以知道,它是覆盖了一个方法并且对其重写,以求达到不同的作用。最熟悉的覆盖就是对接口方法的实现,在接口中一般只是对方法进行了声明,而在实现时,就需要实现接口声明的所有方法。除了这个典型的用法以外,在继承中也可能会在子类覆盖父...

重载和覆盖有什么不同?
重载一般在同一个类中发生,方法名字相同但参数类型与个数不同,返回类型与修饰符也可以不同。方法重写发生在父类与子类之间,两个类存在继承关系,方法重写时方法的定义(修饰符,返回类型,参数列表)必须相同,只是方法体(方法实现)不同。

怎样理解覆盖与重载?
重载(Overloading):1)重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数\/类型。重载是同一个类中多态性的一种表现。2)调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。3)重载的时候,方法名要一样,但是...

Java中方法的重载和覆盖怎么区分?
重载(overload):发生在一个类的内部,而且是针对方法而不是域而言。若方法的签名相同,但参数的个数或者参数的类型不同,则构成了重载。但返回类型不在考虑范围之内,也就是说,如果仅仅是返回类型不同,则构不成重载。 覆盖(override):发生在父类和子类之间,而且是针对实例方法(即非静态方法)...

java里的重写,重载,覆盖的区别?
重写即覆盖,重载与覆盖的区别是:1)方法覆盖要求参数签名必须一致,而方法重载要求参数签名必须不一致;2)方法覆盖要求返回类型必须一致,而方法重载对此不作要求 3)方法覆盖只能用于子类覆盖父类的方法,而方法重载用于同一个类中所有的方法(包括从父类中继承过来的方法)4)方法覆盖对方法的访问权限...

举例说明 Overload和Override的区别
overload与override的区别 override(重写,覆盖)1、方法名、参数、返回值相同。2、子类方法不能缩小父类方法的访问权限。3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。4、存在于父类和子类之间。5、方法被定义为final不能被重写。overload(重载,过载)1、参数类型、个数、...

相似回答