设为首页 加入收藏

TOP

C#之virtual 和abstract
2014-11-24 01:40:32 来源: 作者: 【 】 浏览:1
Tags:virtual abstract

前几天看到文哲的博客中有一个关于virtual和 abstract的区别问题。可以说当时也是模棱两可,也不太确定具体有什么区别,今天查了查,稍微有点收获,希望对您有所帮助:


1、先说虚方法 virtual


虚方法有自己的函数体,已经提供了函数实现,但是允许在子类中重写或覆盖。重写的子类虚函数就是被覆盖了。下面就来具体举个例子来说明一下:


首先建立父类Animal,其中包含虚方法 Shout()


classAnimal
{
public virtual string Shout()
{
return "动物";
}
}
//子类Dog继承父类Animal
classDog : Animal
{
}


主函数中写如下程序:


classProgram
{
static void Main(string[] args)
{
Animal dog1 = new Dog();
Console .WriteLine ( dog1.Shout());
}
}


得到的结果如下:


C#之virtual 和abstract


如果将上面的子类Dog中复写父类中的方法Shout(),即将其改成下面的代码:


classDog : Animal
{
public override string Shout()
{
return "狗";
}
}


主函数不变,则其结果如下:


C#之virtual 和abstract



2、在看抽象abstract


其分抽象类和抽象方法


1)一般在类前面加上abstract就成抽象类了,抽象类其不能被实例化,就像抽象类Animal,其实例化的结果也没有任何意义;


2)抽象方法和抽象类一样,在返回值前加abstract就成抽象方法了。抽象方法没有方法体,直接在括号后面加“;”即可。如下:


abstract class Animal


{


protected abstract string getShoutSound();


}


3)抽象方法必须要被子类重写


4)如果类中包含抽象方法,则该类就必须定义成抽象类


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C#中的面向对象 下一篇Java高手速成秘籍——Eclipse鲜为..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: