多态的概念
父类引用指向子类对象,从而产生多态。
子类对象可以看做是父类对象。
父类引用指向子类对象,对象的实际类型并不发生改变。
通过引用调用方法,只可以调用引用类型中声明的方法。
实际执行方法时,以对象类型的方法为准。
父类引用只可以调用父类中声明的属性和方法,不可以调用子类中独有声明的属性和方法。(如果子类中的方法覆盖了父类中的方法,则实际调用的是子类中的方法)
语法
父类引用 引用名称 = new 子类类型()
应用方式
使用父类作为形参实现多态。
使用父类作为方法的返回值实现多态。
用在数组上
作用、好处
屏蔽子类间的差异。
灵活、耦合度低。
提高程序的通用性。
转型 instanceof
装箱:父类引用中存储子类真实对象,称为装箱(向上转型)
例如:Animal a = new Dog();
拆箱:将父类引用中的真实子类实例,转换回其本身类型,称为拆箱(向下转型)
例如:Dog dog = (Dog) a;
instanceog关键字
语法
引用名称 instanceof 类名
布尔表达式,判断引用中的对象是否与目标类型一致。如果类型不同强转会产生ClassCastException(类型转换异常)。
多态是面向抽象(父类)编程,而不针对具体(子类)编程;在编程时,定义父类类型的引用,实际执行时传入不同的子类对象,在满足子类对象的效果时,能提高程序的通用性。