社区
C#
帖子详情
谁帮我通俗的讲讲abstract 和virtual修饰符的用法的区别
dabobonimama
2008-02-20 04:26:06
帮助也看了.总觉得不够清晰,
...全文
210
13
打赏
收藏
谁帮我通俗的讲讲abstract 和virtual修饰符的用法的区别
帮助也看了.总觉得不够清晰,
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
龙宜坡
2008-02-21
打赏
举报
回复
is as
chengqscjh
2008-02-21
打赏
举报
回复
例子比较有意思.1+7楼的很明白了
lake_cx
2008-02-21
打赏
举报
回复
接着上面来
如果说狗是非抽象类,那么它应该有一种通用的方法“叫”,叫声都是“汪”(viertual的有实现)
但楼主家养了只变异的狗,它有另外一种叫法,它叫声是“喵”(override这个方法,用“喵”来实现)
stg609
2008-02-21
打赏
举报
回复
找到一种比较通形象的解释:
哺乳动物的属性是:恒温,会叫
哺乳动物包括:猫,狗...
猫的叫声是喵~
狗的叫声是汪~
那么我们现实中会看见具体的一个哺乳动物,如猫,狗,但是我们不可能单纯的看到一个"哺乳动物".
也就是说我们看到的猫狗是具体后的东西,它们都有哺乳动物的共同属性,但是它们又有各自的叫声.
那么联系类来说,哺乳动物就是抽象类,用抽象类不能直接构造一个实例,因为这样没有意义.抽象类是用来继承的.
而哺乳动物的另一个共同属性是会叫,但是猫的叫声和狗的叫声不同,所以在这个抽象类中不能明确定义一个叫声的方法,因为不知道是哪种动物在叫,所以这时候就需要一个虚方法,在哺乳动物这个抽象类中只是给出一个方法:会叫,但是具体叫声在子类中给出定义.也就是说在子类中通过override重写这个方法.
seamanhy
2008-02-21
打赏
举报
回复
我是来学习的,搞了2年的软件了,貌似从来没有用到了这两个。。。惭愧啊。
zoom3000s
2008-02-20
打赏
举报
回复
在一个类中如果把一个方法声明成虚拟(viertual)方法,它的派生类可以实现(override)这个虚拟方法,也可以不实现。
但是,如果把一个抽象类中的一个方法声明成抽象(abstract)方法,那么它的派生类就必须去实现(override)这个抽象方法。
另外,虚拟(viertual)方法可以有自己的方法体,而抽象(abstract)方法没有自己的方法体。
注意:当一个类中的方法被声明成抽象时,它所在的类也必须被声明称抽象的。所有被声明为抽象的类,都不可以被实例化只能从派生类访问基类。
tanxiaoyuexia
2008-02-20
打赏
举报
回复
abstract 他的主要功能是设置一个 抽象类 ,一个类的方法使用了这个方法,那他的类也必须定义为 abstract
定义了 , abstract 的方法必须覆盖.而viertual不用.
一个方法使用了viertual 说明 这个方法可以被覆盖,不过他是可选的
yhhuang_peacocknine
2008-02-20
打赏
举报
回复
有些是要自己体会的,工作或学习中接触的多了,慢慢也就理解了
mondlee
2008-02-20
打赏
举报
回复
UP!
stg609
2008-02-20
打赏
举报
回复
关注!
zhaoguoqingluntan
2008-02-20
打赏
举报
回复
abstract 可以用在类,方法上,这个和接口有点相似,是对对像的抽像。
而 viertual只可以在方法上。而这是子类中可以重写这个方法。
个人理解
tianke3477
2008-02-20
打赏
举报
回复
(转载)
抽象方法
使用abstract关键字 public abstract bool Withdraw(…);
抽象方法是必须被派生类覆写的方法。
抽象方法是可以看成是没有实现体的虚方法
如果类中包含抽象方法,那么类就必须定义为抽象类,不论是否还包含其它一般方法
虚方法
使用virtual关键字 public virtual bool Withdraw(…);
调用虚方法,运行时将确定调用对象是什么类的实例,并调用适当的覆写的方法。
虚方法可以有实现体
Java面向对象实战进阶
主要包括Java高级编程部分,包括:Java
修饰符
、抽象类和接口编程、Java常用类、集合、异常、多线程开发、IO流和文件、Java网络编程、反射、Java8新特性等。内容全面,讲解细致,依然为实际课堂授课内容,语言
通俗
...
C# 基础:Sealed、new、
virtual
、
abstract
、override的理解
当应用于属性或者方法时,sealed
修饰符
必须始终和override一同使用。
通俗
的说:密封类不会有子类。2、newnew关键字用于显式隐藏从基类继承的成员。在使用子类时调用的方法是new关键字新定义的方法,而不是基类...
虚方法
virtual
和抽象方法
abstract
的
区别
虚方法
virtual
和抽象方法
abstract
的
区别
C#
abstract
virtual
interface的
区别
(付static、override
用法
)
1.Virtua:当一个方法被声明为
Virtual
时,它是一个虚拟方法,直到你使用ClassName variable = new ClassName();声明一个类的实例之前,它都不存在于真实的内存空间中。这个关键字在类的继承中非常常用,用来提供...
Abstract
&
Virtual
Class的
区别
View Code 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace ConsoleApplication2 ... 8
abstract
class Item 9 { 1...
C#
110,534
社区成员
642,576
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章