多态--即事物存在的多种表现形式。还称为动态绑定。
例如动物中猫、狗。
猫这个对象对应的类型是猫类型 猫 X = new 猫();
同时猫也是动物中的一种,也可以把猫称为动物。
动物 Y = new 猫();
动物是猫和狗具体事物中抽取出来的父类型。
父类型引用指向了子类对象。
(1)多态的体现形式
a.父类的引用指向了自己的子类对象。
b.父类的引用也可以接受自己的子类对象。
如Animal a = new Cat();a指向了Cat对象。
(2)多态的前提
a.必须是类与类之间的关系,要么继承,要么实现。
b.通常还有一个前提:存在覆盖。
(3)多态的利弊
利:多态的出现大大的提高了程序的扩展性。
弊:虽然提高了扩展性,但是只能使用父类的引用访问父类的成员。
上面的Animal a = new Cat();是一种类型提升,向上转型的操作。
如果想要调用猫的特有方法时,可强制将父类的引用,转成子类类型,向下转型。
注意:
千万不要出现将父类对象转成子类类型的操作。我们能转换的是父类应用指向了自己的子类
对象时,该应用可以被提升,也可以被强制转换。多态自始至终都是子类对象在做着变化。 |
|