C#之virtual 和abstract
来源:互联网 发布:学校网络机房设计方案 编辑:程序博客网 时间:2024/05/16 07:10
前几天看到文哲的博客中有一个关于virtual和 abstract的区别问题。可以说当时也是模棱两可,也不太确定具体有什么区别,今天查了查,稍微有点收获,希望对您有所帮助:
1、先说虚方法 virtual
虚方法有自己的函数体,已经提供了函数实现,但是允许在子类中重写或覆盖。重写的子类虚函数就是被覆盖了。下面就来具体举个例子来说明一下:
首先建立父类Animal,其中包含虚方法 Shout()
classAnimal{ public virtual string Shout() { return "动物"; }} //子类Dog继承父类AnimalclassDog : Animal{}
主函数中写如下程序:
classProgram{ static void Main(string[] args) { Animal dog1 = new Dog(); Console .WriteLine ( dog1.Shout()); }}
得到的结果如下:
如果将上面的子类Dog中复写父类中的方法Shout(),即将其改成下面的代码:
classDog : Animal{ public override string Shout() { return "狗"; }}
主函数不变,则其结果如下:
2、在看抽象abstract
其分抽象类和抽象方法
1)一般在类前面加上abstract就成抽象类了,抽象类其不能被实例化,就像抽象类Animal,其实例化的结果也没有任何意义;
2)抽象方法和抽象类一样,在返回值前加abstract就成抽象方法了。抽象方法没有方法体,直接在括号后面加“;”即可。如下:
abstract class Animal
{
protected abstract string getShoutSound();
}
3)抽象方法必须要被子类重写
4)如果类中包含抽象方法,则该类就必须定义成抽象类
2 0
- C#之virtual 和abstract
- c# virtual 和 abstract
- C# Abstract和Virtual
- c# abstract 和 virtual
- C#之abstract与virtual
- C#中Abstract和Virtual
- C#中Abstract和Virtual
- C#中Abstract和Virtual
- C#中Abstract和Virtual
- C#中Abstract和Virtual
- C#中Abstract和Virtual
- C#中Abstract和Virtual
- C#中Abstract和Virtual
- C#中Abstract和Virtual
- C#中Abstract和Virtual
- C#中Abstract和Virtual
- C#中Abstract和Virtual
- C#中Abstract和Virtual
- zeromq 学习
- LeetCode OJ:Climbing Stairs
- Hibernate properties详解
- 语音有杂音
- SDP 协议分析
- C#之virtual 和abstract
- 转 VAGE的探索频道:Oracle时间之旅
- webform间传参的3种常用方式
- 版本管理
- DBCP、C3P0、Proxool 、 BoneCP开源连接池的比较
- 索引浅谈
- 精心收集的Hadoop学习资料
- freemarker静态化例子
- hdu 1503 Advanced Fruits (公共子序列 的输出)