第一种多态形式:(向上转型)
语法:父类 父类对象 = new 子类对象
Animal animal = new Cat();
第二种多态形式:
语法:子类类型 引用名 = (子类类型) 父类引用;
Animal animal = new Dog(); Dog dog = (Dog) animal; //(高转低,强制转换)
向下转型的前提是父类的引用必须指向的是当前目标类型的对象
提高了代码的维护性(继承保证)
提高了代码的扩展性(由多态保证)
把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。
赋值之后,父类型的引用就可以根据当前赋值给它的子对象的特性以不同的方式运作。也就是说,父亲的行为像儿子,而不是儿子的行为像父亲。
多态是面向对象的重要特性,简单点说:“一个接口,多种实现”,就是同一种事物表现出的多种形态。
编程其实就是一个将具体世界进行抽象化的过程,多态就是抽象化的一种体现,把一系列具体事物的共同点抽象出来, 再通过这个抽象的事物, 与不同的具体事物进行对话。
判断一个对象是某一个类的实例
对象A instanceof ClassB
返回值是一个boolean值,如果对象A是类B的实例,则返回值是true,否则为false