黑马程序员技术交流社区

标题: Override与重载有什么区别? [打印本页]

作者: 吴清华    时间: 2012-7-29 09:56
标题: Override与重载有什么区别?
Override与重载有什么区别?
作者: 陈汉维    时间: 2012-7-29 10:22
Override是覆盖。overload是重载。
override就是子类继承父类,或者子类实现接口,把原有父类或接口中的方法给覆盖了。
例如:
class Fu
{
  void show(){Console.WriteLine("Fu")};
}
class Zi : Fu
{
  void show(){Colsole.WriteLine("Zi")};
}
main()
{
  Zi z = new Zi();
  z.show();//-->结果是Zi。这就是覆盖。
}
而overload重载就是方法名相同,但是参数类型不同,例如:
class Person
{
  Person(){}
  Person(string name){}
  Person(string name,int age)
}
作者: 许庭洲    时间: 2012-7-29 13:23
1,Override 是在继承的时候,如果你写的函数与要继承的函数函数特征相同,那么加上这个关键字,在使用这个子类的这个函数的时候就看不见父类(或超类)的函数了,它被覆盖掉了;
2,而重载是方法名相同,参数不同,传不同的参数则调用不同的方法。
作者: 李晋    时间: 2012-7-29 17:46
一个是重写父类函数,一个是同一个函数的几种形式
作者: 郭正续    时间: 2012-7-30 09:07
重载是指方法名相同但参数类型或个数或顺序不同。
而Override是重写,就是子类方法继承父类方法
作者: 王峰    时间: 2012-7-30 09:46
重载是让同名的方法根据不同的数据类型可以处理和返回不同类型的数据。而覆盖则与作用域有关了,在子类中与父类同名的方法,在子类中父类的方法就不能被调用,可以说被屏蔽了。

--------------------------------------------------------------------------------
重载是让同一方法名的方法可以处理和返回不同类型的数据,而覆盖是在子类中改写父类的方法

--------------------------------------------------------------------------------
重载与覆盖的区别
1、方法的覆盖是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系。
2、覆盖只能由一个方法,或只能由一对方法产生关系;方法的重载是多个方法之间的关系。
3、覆盖要求参数列表相同;重载要求参数列表不同。
4、覆盖关系中,调用那个方法体,是根据对象的类型(对象对应存储空间类型)来决定;重载关系,是根据调用时的实参表与形参表来选择方法体的。

--------------------------------------------------------------------------------
相同点:被覆盖(重载)的函数的函数名必须是一样的;
不同点:覆盖的函数的函数参数表必须和被覆盖的函数的参数表一样,重载的函数的函数参数表必须和被重载的函数的参数表不一样.
   
作者: 黑马—代忠    时间: 2012-7-30 15:19
重写=覆盖(override):函数名和参数类型及返回值类型都相同,同时不能降低访问权限(重写时参数名最好也一样)  
重载(overload):函数名相同,参数不同,与返回值无关
抽象类中的实体方法只要继承抽象类就可以使用,只有它里面的抽象方法才必须要重写.不能生成对象只能被重写
Interface c=null;  接口声明得到的对象只能调用自己借口里的方法!
作者: Suko    时间: 2012-7-31 22:53
最大区别就是一个是关于继承的,一个是在本类中的。
方法重写,就是对继承的方法持反对牌,完全颠覆或者是部分颠覆父类中方法的执行。
方法重载,就是一个方法名,我可以用不同的参数来使用这个方法。好记,而不用一个参数变化,我就要给方法重新取一个名字。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2