C#基础总结——虚方法和抽象方法
2016-02-14 10:42
316 查看
学过C#的人,应该都听过说虚方法和抽象方法,但是对于初学者来说,虚方法和抽象方法,还可能会时常搞混他们的关系。因此我们非常有必要抽出时间,把他们放在一起,进行对比,揭开他们神秘的外纱。
虚方法和抽象方法都可以供派生类重写,那么他们之间有什么区别呢?
虚方法必须有实现部分,而抽象方法必须没有实现部分。
抽象方法和虚方法的区别:
虚方法有一个实现部分,并为派生类提供了覆盖该方法的选项,相反,抽象方法没有提供实现部分,强制派生类覆盖方法;
abstract方法只能在抽象类中声明,虚方法不是。
abstract方法必须在派生类中重写,而virtual则不必。
abstract方法不能声明方法实体,虚方法则可以。
虚方法和抽象方法都可以供派生类重写,那么他们之间有什么区别呢?
虚方法必须有实现部分,而抽象方法必须没有实现部分。
<span style="font-size:18px;">public Class Animal//虚方法 { public virtual void Sleep() {}//实现部分 // virtual是虚方法的关键字体 public virtual void Shout() {} }</span>
<span style="font-size:18px;">public abstract Class Animal { public void Sleep(); public void Shout(); }</span>正是因为抽象方法没有实现部分,所以必须强制其派生类重写其实现方法。使其在子类中实现。否则派生类将不能被实例化。(这一点并不用担心,因为如果我们制定一个子类继承抽象父类,那么我们的编译器会自动添加必须重写的方法。)
<span style="font-size:18px;">public Class Cat:Animal { public override void Sleep() { Console.WriteLine("Cat is sleeping") } public override void Shout() { Console.WriteLine("cat is Shouting") } }</span>
抽象方法和虚方法的区别:
虚方法有一个实现部分,并为派生类提供了覆盖该方法的选项,相反,抽象方法没有提供实现部分,强制派生类覆盖方法;
abstract方法只能在抽象类中声明,虚方法不是。
abstract方法必须在派生类中重写,而virtual则不必。
abstract方法不能声明方法实体,虚方法则可以。
相关文章推荐
- C#委托与事件初探
- c#实现简单金山打字小游戏(源码)
- 【C#基础】初相识——初步认识C#
- C#中数组、ArrayList和List三者的区别
- C#成神之路<19> C#使用磁盘数据文件(3)
- C#设计模式——模板方法模式
- C#写计算器实例
- 单例模式
- C#设计模式——建造者模式
- 学习C# 继承 封装 多态
- 关于C#未能从程序集XXX加载XXX类型问题的解决方法
- c# enum の値を対応
- C#字典
- C#发送邮件时提示:“不允许使用邮箱名称。服务器响应为:”的错误解决办法
- C#里面Attribute的使用方法
- C# 的三种序列化方法
- C#事件触发机制
- c#基本知识:泛型集合的使用
- C#机房重构——万事开头难(一)
- Atitit. C#.net clr 2.0 4.0新特性