常山做网站

当前位置:

常山建网站,C#之虚方法和重写方法

浏览量:13381次

常山做网站常山建网站



  //基类中的虚法子到底有甚么感导?

  //C#中指出:平庸的方式重载:指的是类中两个以上的办法(包孕匿伏的,秉持而来的方法)取的名字相同,只有使用的参数类型笼统参数个数一致,编译器便

  //知道在何种状况下该当挪用哪一个法子。

  //而在派生类中从头定义此虚门径时要求的是:法子称说、前去值类型、参数表中的参数个数、类型、法度都必需与基类中的虚方式彻底一致。

  //简繁多点说等于子类中override的法子能够笼盖基类中的virtual办法,当你把一个子类的实例转换为基类时,调用该方式时照常挪用的子类的override的方

  //法。

//一个类内中两个名字一样的办法叫“重载”,基类和承继类内中名字异样的办法叫“重写网站建设”,重写就必须应用虚方法。

  //只有基类的法子加上要害字virtual后才可以被派生类override,从而完成面向对象最紧要的特色--多态性,即基类可以运用派生类的方法

  //父类中的法子重载,供给了某行为的差别实现方法(传入分歧的参数);

  //在子类中对父类响应法子的重载,可以多么熟习(现实编译进程不是何等),子类纯粹copy父类代码后,把重载(override)的那局部代码挖去并用子类新的

  //代码填上。

  //假定子类没有重载(没有应用voerride症结字)而有与父类纯粹同样的方法,可以多么相识,子类没有挖去代码,只不过简单掩饰笼罩,当要运用集成

//来的代码时,只需要类型转换就能把掩盖代码体现进去网站建设

  //假如不想让虚方式进行重写,可以用关键字(sealed)进行保护

  //示例:public override sealed void Write();//sealed只能用在重写方法上

  //上面的代码举例注明

  class a

  {

  public virtual void VirtualMothed()

  {

  Console.WriteLine("这是a类中的一个虚门径");

  }

  public void NoVirtualMothed()

  {

  Console.WriteLine("这是a类中的一个非虚方法");

  }

  }

  class b:a

  {

  public override void VirtualMothed()

  {

Consol网站建设e.WriteLine("这是b类中重写的一个虚方式");

  }

  public new void NoVirtualMothed()//非虚方法就不是重写了,需要界说一个new来陈诉编译器我新界说了一个门径。

  {

  Console.WriteLine("这是b类中的一个非虚方法");

  }

  }

  class Program

  {

  static void Main(string[] args)

  {

  //虚方式:若一个实例办法声名中含有virtual这个修饰符,则称该方式为虚门径,不然等于非虚办法。

  a a=new a();//实例化类a

  a.VirtualMothed();//输出毕竟:这是a类中的一个虚方式

a.NoVirtual网站建设Mothed();//输出终究:这是a类中的一个非虚法子

  b b=new b();

  b.VirtualMothed();//输出结果:这是b类中重写的一个虚办法

  b.NoVirtualMothed();//输入结果:这是b类中的一个非虚方式

  a=b;//将b赋值给a

  a.VirtualMothed();//输出终于:这是b类中重写的一个虚法子

  a.NoVirtualMothed();//输出终归:这是a类中的一个非虚门径

  Console.ReadKey();

  }

  }

常山做网站就找春秋科技,春秋科技是一家专注于常山网站建设、常山网站设计、常山网站制作、常山做网站、常山建网站等服务的常山网站建设公司。已成功帮助10000多家企业实现网上盈利,为企业提供常山网站建设一站式服务。

24小时服务热线:13733108860

[声明]本网转载网络媒体稿件是为了传播更多的信息,此类稿件不代表本网观点,本网不承担此类稿件侵权行为的连带责任。故此,如果您发现本网站的内容侵犯了您的版权,请您的相关内容发至此邮箱【】,我们在确认后,会立即删除,保证您的版权。