博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
虚方法和抽象方法--基础回顾
阅读量:5045 次
发布时间:2019-06-12

本文共 889 字,大约阅读时间需要 2 分钟。

抽象方法是只有定义、没有实际方法体的函数,它只能在抽象函数中出现,并且在子类中必须重写;虚方法则有自己的函数体,已经提供了函数实现,但是允许在子类中重写或覆盖。

重写的子类虚函数就是被覆盖了。

抽象方法

使用abstract关键字 public abstract bool Withdraw(…);

抽象方法是必须被派生类覆写的方法。

抽象方法是可以看成是没有实现体的虚方法

如果类中包含抽象方法,那么类就必须定义为抽象类,不论是否还包含其它一般方法

虚方法

使用virtual关键字 public virtual bool Withdraw(…);

调用虚方法,运行时将确定调用对象是什么类的实例,并调用适当的覆写的方法。

虚方法可以有实现体 若一个实例方法的声明中含有 virtual 修饰符,则称该方法为虚拟方法;

一个虚拟方法的实现可以由派生类取代。取代所继承的虚拟方法的实现的过程称为重写该方法;在一个虚拟方法调用中,该调用所涉及的那个实例的运行时类型确定了要被调用的究竟是该方法的哪一个实现。

 

虚函数的限制:

1.虚函数仅适用于有继承关系的类对象, 所以只有类的成员函数才能说明为虚函数.

2.静态成员函数不能是虚函数.

3.内联函数不能是虚函数.

4构造函数不能是虚函数.

5.析构函数可以是虚函数. 简单点说,抽象方法是需要子类去实现的.虚方法,是已经实现了,子类可以去覆盖,也可以不覆盖取决于需求.

 

简单点说,抽象方法是需要子类去实现的.虚方法,是已经实现了,子类可以去覆盖,也可以不覆盖取决于需求. 

虚方法和抽象方法都可以供派生类重写,它们之间有什么区别呢?

1. 虚方法必须有实现部分,抽象方法没有提供实现部分,抽象方法是一种强制派生类覆盖的方法,否则派生类将不能被实例化。

2. 抽象方法只能在抽象类中声明,虚方法不是。其实如果类包含抽象方法,那么该类也是抽象的,也必须声明为抽象的。

3. 抽象方法必须在派生类中重写,这一点跟接口类似,虚方法不必。

转载于:https://www.cnblogs.com/newsouls/p/3894211.html

你可能感兴趣的文章
ASP.NET WebService
查看>>
一个TokenUtils程序,亲测可用
查看>>
KVO 崩溃问题
查看>>
洛谷T47092 作业_简单状压动归
查看>>
在jsp页面如果运行时路径错误解决方法
查看>>
Jquery弹出层插件Thickbox使用心得
查看>>
jQuery Ajax 实例 全解析
查看>>
JS的解析与执行过程—全局预处理阶段之全局词法环境对象
查看>>
Django忘记管理员账号和密码的解决办法
查看>>
producer数据分发到多个partition
查看>>
.NET Framework
查看>>
Python ConfigParser模块
查看>>
【持续更新】最全Hexo个人博客搭建+主题优化+插件配置+错误分析
查看>>
Hello~! 我的blog
查看>>
UPDATE SELECT OUTPUT
查看>>
转:oracle驱动表
查看>>
Django模型层的多表操作(1)
查看>>
jmeter 多线程组间变量共享
查看>>
Phpstorm如何连接服务器
查看>>
Vim 插件的安装
查看>>