抽象类,虚方法与普通类的区别
1.虚方法
在一个类中,用virtual修饰符标识的方法,叫做虚方法。他被用来在其派生类中重写方法。
例如,我们可以这样写:
有人可能会疑惑,为什么要写虚方法,我直接再写个别的方法不就行了吗?
如果你这样问的话,我就不开心了,说明你面向对象三大特征没有明白,多态是怎么实现的,不就是可以通过使用虚方法实现的吗(也可以重载),不要告诉我你不知道什么是多态啊
简单解释下,多态:同一行为的不同实现方式。实际上就是同一个类型的实例调用"相同"名称的方法,产生的结果是不同的。比如,有一个动物父类,当中有一个fly()的虚方法表示飞行动作,其子类鸡鸭鹅等继承父类,但鸡鸭鹅的飞行方式,飞的高低等是不一样的,我们可以在这些子类中重写fly()这个虚方法,表示自己特有的飞行方式。这就是多态,多种形态。
2.抽象成员
1. 在了解抽象类之前,我们先简单了解下抽象成员,(我们必须知道什么是成员,属性,方法这些都是成员)
抽象成员是被设计用来覆写的函数成员,他被用abstract修饰符标记,没有实现代码块,被用分号代替。(代码块:用一对“{}”括起来的代码)
例如,在哟个抽象类中,有以下抽象成员:(注意,抽象成员必须在抽象类中)
但如果你不在抽象类中,他会报错提示你的的:
在普通类中,我们有以下比较:
3.抽象类
1.用abstract修饰符标识的类,称为抽象类。抽象类就是被设计用来被继承的。
抽象类可以包含抽象成员,也可以包含其他普通成员,一个抽象类可以派生出另一个抽象类,也可以派生出另一个普通类,但这个普通类必须实现其父类(抽象基类)的所有抽象成员。
2.从上面的代码中其实你已经可以看到,实现抽象成员的方法就是使用override关键字。
3.抽象类不能被实例化,我们应该清楚,他就是用来做基类的,他不能像独立的类那样被实例化。