虚方法(virtual)和抽象方法(abstract)的区别
虚方法和抽象方法都可以供派生类重写,它们之间有什么区别呢?
1. 虚方法必须有实现部分,抽象方法没有提供实现部分,抽象方法是一种强制派生类覆盖的方法,否则派生类将不能被实例化。如:
public abstract class Animal
{
public abstract void Sleep();
public abstract void Eat();
}
//虚方法
public class Animal
{
public virtual void Sleep(){}
public virtual void Eat(){}
}
2. 抽象方法只能在抽象类中声明,虚方法不是。其实如果类包含抽象方法,那么该类也是抽象的,也必须声明为抽象的。如:
{
public abstract void Sleep();
public abstract void Eat();
}
编译器会报错:
Main.cs(10): 'VSTest.Animal.Sleep()' is abstract but it is contained in nonabstract class 'VSTest.Animal'
Main.cs(11): 'VSTest.Animal.Eat()' is abstract but it is contained in nonabstract class 'VSTest.Animal'
3. 抽象方法必须在派生类中重写,这一点跟接口类似,虚方法不必。如:
{
public abstract void Sleep();
public abstract void Eat();
}
public class Cat : Animal
{
public override void Sleep()
{
Console.WriteLine( "Cat is sleeping" );
}
// we need implement Animal.Eat() here
}
编译器会报错:Main.cs(14): 'VSTest.Cat' does not implement inherited abstract member 'VSTest.Animal.Eat()',因为我们没有实现抽象类中所有抽象方法。
虚方法(virtual)和抽象方法(abstract)的区别相关推荐
- C# 虚方法(virtual)覆盖(override) - 隐藏(new) - 重载
C# 虚方法(virtual)覆盖(override) - 隐藏(new) - 重载 using System; using System.Collections.Generic; using Sys ...
- C#中虚方法(virtual)详解
前言;在前面的博客重写中提到了虚方法和抽象类,本博文详细介绍下虚方法: 目录: 一.虚方法的定义: 二.虚方法的声明: 三.虚方法的调用: 四.虚方法的规则: 五.虚方法注意事项: 六.虚方法的好处: ...
- C#进阶学习--虚方法(virtual)
一.定义 简单的说,虚方法就是可以被子类重写的方法,如果子类重写了虚方法,那么运行时将使用重写后的逻辑,如果没有重写,则使用父类中虚方法的逻辑. 定义关键字:virtual 重写关键字:overrid ...
- 虚方法virtual详解(转载)
从C#的程序编译的角度来看,它和其它一般的函数有什么区别呢?一般函数在编译时就静态地编译到了执行文件中,其相对地址在程序运行期间是不发生变化的,也就是写死了的!而虚函数在编译期间是不被静态编译的,它的 ...
- 抽象方法与虚方法的区别
一.抽象方法:只在抽象类中定义,方法修饰符不能使用private,virtual,static. 总结:(1)抽象方法只能声明在抽象类中,使用关键字abstract (2)抽象类中的抽象方法必须被子类 ...
- 虚方法、重写方法和抽象方法[转载]
若一个实例方法的声明中含有 virtual 修饰符,则称该方法为虚方法 (virtual method).若其中没有 virtual 修饰符,则称该方法为非虚方法 (non-virtual metho ...
- 重写方法,重载方法,虚方法和抽象方法的使用
重写方法,重载方法,虚方法和抽象方法. 重写:指子类重新实现父类的某些方法,以实现一些新的功能.重写的关键字是override.并且重写的方法其签名是相同的. 重载:指允许类中具有相同函数名的方法,但 ...
- 抽象类,虚方法,接口
这三样很多人容易混淆,在此总结一下 1. 虚方法 Virtual 基类中定义了虚方法,派生类中可以实现,也可以不实现,因为虚方法是有方法体的,如果要实现,派生类中用override重写该方法. pub ...
- java 虚函数_Java的虚方法
虚方法出现在Java的多态特性中, 父类与子类之间的多态性,对父类的函数进行重新定义.如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding).在Java中,子类 ...
最新文章
- 以太坊 智能合约 简介
- movsb和movsw
- JAVA 之异常处理与IO流
- vmware搭建ubuntu虚拟机(包含安装搜狗输入法和apt,dpkg的使用教程)
- 关于实现Runnable接口的类中有公共属性问题
- 危机时刻,我们需要多少个“冷锋”?
- UI素材干货模板|线框图wireframe线框图iOS设计稿
- Python爬虫扩展库BeautifulSoup4用法精要
- 图说可视化,报表也能做得如此酷炫!
- 跟我一起数据挖掘(23)——C4.5
- php判断手机 跳转代码,php判断客户端是手机设备然后跳转到手机站
- 2007最新最强杀毒软件破解大全
- [CGAL] CGAL的编译与使用
- 【拼多多】六一儿童节
- MySQL数据库比较工具 - mysqldbcompare
- cpu与主板的区别、独立显卡与集成显卡
- MFC透明位图显示函数
- 盒装Ubuntu着装绝妙,闪亮登场
- vasp 模拟退火_VASP 计算问题小结
- Android 系统电量统计