当前位置:  编程技术>.net/c#/asp.net

C#中多态、重载、重写区别分析

    来源: 互联网  发布时间:2014-11-04

    本文导语:  本文实例总结了C#中多态、重载与重写的概念与区别。对于初学C#的朋友来说有不错的参考价值。分享给大家供大家参考。具体分析如下: 重写:是指重写基类的方法,在基类中的方法必须有修饰符virtual,而在子类的方法中必...

本文实例总结了C#中多态、重载与重写的概念与区别。对于初学C#的朋友来说有不错的参考价值。分享给大家供大家参考。具体分析如下:

重写:是指重写基类的方法,在基类中的方法必须有修饰符virtual,而在子类的方法中必须指明override。

格式如下:

1.在基类中:

public virtual void myMethod() 
{ 
} 

2.在子类中:

public override void myMethod() 
{ 
} 

重写以后,用基类对象和子类对象访问myMethod()方法,结果都是访问在子类中重新定义的方法,基类的方法相当于被覆盖掉了。

重载:用于在给定了参数列表和一组候选函数成员的情况下,选择一个最佳函数成员来实施调用。

public void test(int x,int y){} 

public void test(int x,ref int y){} 

public void test(int x,int y,string a){} 

重载的特征:

I.方法名必须相同

II.参数列表必须不相同,与参数列表的顺序无关

III.返回值类型可以不相同

但如果有泛型,就要注意了!

多态:c#的多态性主要体现在类的继承上:

子类继承父类的时候,可能出现同名但方法定义不同的情况,
所以在子类中会将原方法覆盖,实现自身的要求.

需要注意的地方有两点:

①.可以在子类中被重写的方法一定要被标记成virtual(虚拟), abstract(抽象), override(重写)标记为virtual 和abstract 的函数就是为了重写而创建的,标记为override的函数本身是由前两种函数重写而来的,所以它可以被重写也是顺理成章的了;

②.重写的函数必须在子类中出现,而且任何一个父类的函数在其一个子类中只能被重写一次。(这一点很好理解,当你要重写两次时,该子类中将定义两个返回类型,方法名称 和参数列表都相同的函数,这肯定是不可能的)。

相信本文所述对大家C#程序设计的学习有一定的参考借鉴价值。


    
 
 
 
本站(WWW.169IT.COM)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.169IT.COM)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++操作符(Operator)用法(new和重载)
  • 请问重载和覆盖的区别是什么?
  • 那请问过载和重载的区别是什么?
  • c++重载的详细总结
  • C++中不能被重载的运算符介绍
  • 请问有关过载和重载的问题?
  • 关于重载的问题,超急,在线等!!!!
  • String的+是不是像c++一样重载运算符?
  • 一个scjp的题------关于重载
  • 问一个很蠢的问题:什么是重载,继承,实例,派生,接口
  • LINUX的共享库(.so库)中可以重载函数吗?
  • 在什么情况下重载paint()或paintComponent(),我不知道怎么办?
  • C++概念重载、覆盖、隐藏的使用说明
  • 请问方法中参数个数相同但参数类型不同,该算是overload(重载)吗?
  • 这句话对不对 用final修饰的方法是不能被该类的子类所重载的方法 ?
  • 方法重载有什么好处?
  • Java 能否实现类似于重载运算符的功能?
  • 关于“创建重载现存方法的方法”
  • c++ *运算符重载
  • ASP.NET方法如何重载需要必备哪些条件
  • 有关重载与过载之间关系的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2017,169IT.COM,E-mail:www_169it_com#163.com(请将#改为@)

    浙ICP备11055608号