多态的字面的意思就是“多种状态”。在面向对象中,接口的多种不同的实现方式即为多态。引用Charlie Calverts对多态的描述——多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。多态性在Object Pascal和C++中都是通过虚拟函数实现的。
多态有三种实现方式:
1 接口:接口不能有实例成员;接口可以被多继承。 接口不能包含构造函数
2 虚函数(重写):
方法的重载: 在同一个类中,出现多个同名的方法,参数列表不同,与返回值类型,修饰符无关
方法的重写: 子类中出现和父类中一模一样的方法(包括返回值类型,方法名,参数列表)
3抽象:如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。使用关键字 abstract 来声明。包含抽象方法的类一定得是抽象类,但抽象类中可以包含实例成员,这些实例成员也将遗传给儿子 抽象类不可以被实例化,但可以有构造函数,它的构造函数会在子类实例化的时候调用
抽象类的特点:
1 抽象类不能实例化
2 抽象类不一定包含抽象方法,但是一个类包含抽象方法,它就一定是抽象类。
3 抽象类中的抽象方法只是声明,不包含方法体。
4 继承抽象类的子类如果不是抽象类就必须重写父类的所有抽象方法。
5.构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法。