浏览量:7450次
//基类中的虚法子到底有甚么感导?
//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
[声明]本网转载网络媒体稿件是为了传播更多的信息,此类稿件不代表本网观点,本网不承担此类稿件侵权行为的连带责任。故此,如果您发现本网站的内容侵犯了您的版权,请您的相关内容发至此邮箱【】,我们在确认后,会立即删除,保证您的版权。