A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈凯 中级黑马   /  2013-3-4 11:47  /  2194 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Override与重载有什么区别?

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

7 个回复

正序浏览
1.Override关键字主要是提供派生类对基类方法的新实现,重写的基类方法必须和Override的方法具有相同的签名,此关键字不可以用于重写非虚方法和静态方法,与其配套使用的关键字是Virtual、abstract、Override。
2.Override方法还不可以修改Virtual方法的可访问性,Override方法和Virtual方法必须具有相同的访问修饰符,不能使用修饰符 new、static、virtual 或 abstract 来修改 override 方法。
3. Virtual 关键字允许在派生类中重写这些对象,默认情况下,方法是非虚拟的,不可以重写非虚方法,virtual关键字不可以与static、abstract、private、override一起使用。Virtual关键字又是和override紧密不可分的,如果要实现Virtual方法就必须要使用override或new关键字(new和override产生的机理不同)。
4.Override主要用来对基类的方法和虚方法进行重写。
5.override叫覆盖重载是相同的方法名,但是返回类型或者参数个数或类型不同,叫做重载override覆盖的是父类的方法,例如父类有一个ToString()方法,当我们觉得它不能满足需求,我们会在自己的方法里面重写这个方法,但是别人在通过多态调用父类的时候我又希望它能按照我子类的ToString()方法去执行的,这个时候就用Override标示一下,这样无论是多态的调用还是直接调用,调用的都是我自己的ToString方法
               

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
重载,方法重载:方法名相同,方法的参数个数、参数放置顺序或参数类型不同,这样的几个方法构成方法的重载。重载时关键字 Overloads 是可选的。注意:返回值类型的不同不能做为判断是否构成方法重载的依据!
override 方法提供从基类继承的成员的新实现。 由 override 声明重写的方法称为重写基方法。 重写的基方法必须与 override 方法具有相同的签名。重写的基方法必须是 virtual、abstract 或 override 的,不能重写非虚方法或静态方法。

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
override修饰符,覆写一个基类中的方法...重载则是将将同名方法重新写过,达到同名的函数实现不同的功能.从而实现了一个方法有不同的版本.override与重载的本质区别是,加入了override的修饰符的方法,此方法始终只有一个被你使用的方法..这个区别就好像:
override就好像
你叫张三,你爸爸给修改了名字为李四...
重载就好像
你叫张三,但是别人也可以叫张三..

2、.net的错误处理机制是什么
错误的处理顺序:finally先,catch次之,最后退会try代码..取消此次操作.返回catch中的异常信息.当然,你也可以定制自己的错误处理机制...如果你的异常处理中包含finally块.则此finally无论是否发生异常始终会被执行...

3、C#中接口和类的异同
接口和类的区别是本质的..类是负责功能的实现,而接口则是负责功能的定义..项目中可以通过实现接口来规范类,操作类,抽象类的概念..从而达到高度的抽象..你也可以称接口为一个没有功能的类.

override是实现抽象方法,用于当基类不能为一个方法提供任何有的意义的实现的时候,相当于怎么说呢,如果一个基类中对一个方法的方法体不明确的时候,就可以定义他成为一个抽象方法,这样继承他的子类就被迫必须实现这个方法,否则就不能实例化,这是我的个人理解,重载不用说了吧,自己理解了就知道他们的区别在哪。

4、DataReader和DataSet的异同
DataReader和DataSet最大的区别在于,DataReader使用时始终占用SqlConnection,在线操作数据库..任何对SqlConnection的操作都会引发DataReader的异常..因为DataReader每次只在内存中加载一条数据,所以占用的内存是很小的..因为DataReader的特殊性和高性能.所以DataReader是只进的..你读了第一条后就不能再去读取第一条了..
DataSet则是将数据一次性加载在内存中.抛弃数据库连接..读取完毕即放弃数据库连接..因为DataSet将数据全部加载在内存中.所以比较消耗内存...但是确比DataReader要灵活..可以动态的添加行,列,数据.对数据库进行回传更新操作...

DataReader和DataSet最大的区别在于,DataReader使用时始终占用SqlConnection,在线操作数据库..任何对SqlConnection的操作都会引发DataReader的异常..因为DataReader每次只在内存中加载一条数据,所以占用的内存是很小的..因为DataReader的特殊性和高性能.所以DataReader是只进的..你读了第一条后就不能再去读取第一条了..
DataSet则是将数据一次性加载在内存中.抛弃数据库连接..读取完毕即放弃数据库连接..因为DataSet将数据全部加载在内存中.所以比较消耗内存...但是确比DataReader要灵活..可以动态的添加行,列,数据.对数据库进行回传更新操作...

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
重载是方法的名称相同。参数个数或参数类型不同,进行多次重载以适应不同的需要。重载(overload)是面向过程的概念。
Override 是进行基类中函数的重写,是面向对象的概念

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
区别                                方法重载                                                        方法复写
英文单词                       Overloading                                                           Override
概念                 方法名称相同,参数的个数或者类型不同                方法名称相同,参数的个数和类型相同,方法的访问权限不能更严格
使用范围               发生在同一个类中                                               发生在继承关系中,是由子类进行复写

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
覆盖(也叫重写)是指在派生类中重新对基类中的虚函数(注意是虚函数)重新实现。即函数名和参数都一样,只是函数的实现体不一样。
重载是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同。调用的时候根据函数的参数来区别不同的函数。
回复 使用道具 举报
额。。这 2个没关系吧?

类里面同名的函数但参数列表不同 称做 重载  

子类 override 父类的抽象方法或者虚方法 称做 重写。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马