C#学习virtual(虚拟的)和abstract(抽象的)的区别

简介: C#学习virtual(虚拟的)和abstract(抽象的)的区别

在C#中碰到了这两个东西“virtual”与“abstract”,自己也有一个问题就是对于他们的用处是干什么的。

这个两个的共同点还是有的,就是都可以重写,通过覆盖父类的定义,让子类重新定义。

并且在用来修饰方法时,前面一定是public,不然会出现编译错误,这就是他们不能够是私有的。而对于它们的重写关键词就是override,有这个关键词也是防止了子类不小心把父类的一些方法给重写了。有这个override也是一个标识。


对于这两个的不同之处也是有的


1.virtual必须有方法体(一对大括号也算“{}”),而abstract修饰的方法不能够有个方法体,而且abstract还必须是声明在抽象类中的抽象方法,不能够声明在普通类中,不然会报错。而这个抽象类中的抽象方法必须被继承类全部实现才行。


2.virtual可以被重写。abstract必须被重写。


3.抽象类不能够直接被实现,只能够通过派生类继承。

那么关于virtual的认识就是它的很大功能是实现代码的复用,当然满足了个别子类的重写的需求。


而抽象方法只能够通过重写来实现。

相关文章
|
2月前
|
Java 调度 C#
C#学习系列相关之多线程(一)----常用多线程方法总结
C#学习系列相关之多线程(一)----常用多线程方法总结
|
2月前
|
C#
C#学习相关系列之数据类型类的三大特性(二)
C#学习相关系列之数据类型类的三大特性(二)
|
2月前
|
C#
C#学习相关系列之yield和return的区别
C#学习相关系列之yield和return的区别
|
2月前
|
C#
C#学习系列相关之多线程(二)----Thread类介绍
C#学习系列相关之多线程(二)----Thread类介绍
|
2月前
|
C#
C#学习相关系列之数据类型类----嵌套类和嵌套方法(三)
C#学习相关系列之数据类型类----嵌套类和嵌套方法(三)
|
2月前
|
存储 C# 索引
C#学习相关系列之数据类型类的定义(一)
C#学习相关系列之数据类型类的定义(一)
|
2月前
|
C#
C#学习相关系列之自定义遍历器
C#学习相关系列之自定义遍历器
|
2月前
|
安全 C#
c#学习相关系列之as和is的相关用法
c#学习相关系列之as和is的相关用法
|
2月前
|
C# 索引
C#学习相关系列之abstract和virtual用法
C#学习相关系列之abstract和virtual用法
|
10天前
|
开发框架 前端开发 .NET
C#编程与Web开发
【4月更文挑战第21天】本文探讨了C#在Web开发中的应用,包括使用ASP.NET框架、MVC模式、Web API和Entity Framework。C#作为.NET框架的主要语言,结合这些工具,能创建动态、高效的Web应用。实际案例涉及企业级应用、电子商务和社交媒体平台。尽管面临竞争和挑战,但C#在Web开发领域的前景将持续拓展。