A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

在实现多态是,什么时候用虚方法什么时候用抽象类?它们有何区别?

评分

参与人数 1技术分 +1 收起 理由
赵宗荣 + 1

查看全部评分

3 个回复

倒序浏览
如果知道父类的方法怎么实现就可以用虚方法实现多态,如果不知道怎么实现,则用抽象类。语法区别的话虚方法是在父类的方法前面加上virtaul,而抽象类则要在声明类的时候加上abstract,抽象类的方法里面不用写内容,个人觉得虚方法可以转换成抽象类,知识代码会多一点,会多写一个类。但如果不知道某个方法怎么实现的话,虚方法就不能转换成抽象类

评分

参与人数 1技术分 +1 收起 理由
赵宗荣 + 1

查看全部评分

回复 使用道具 举报
1、抽象类不能作用于值类型 而接口可以作用于值类型 比如说让一个结构体实现接口
2、抽象类是一种功能、规范 可以作用于没有继承关系的两个类 比如说鸟和飞机都有飞的功能 但相互之间并没有直接的联系 这个时候需要使用接口
3、接口可以实现多继承 更好的体现了单一职责原则
4、接口一般用于小模块 提高程序性能 抽象类中会有些用不上的成员 造成冗余
回复 使用道具 举报
要用父类本身方法 则用虚方法 比如new 父类().方法  调用的是父类的虚方法..如果new 子类()调用的是子类的重写方法.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马