java面向对象的第三个特征是多态,我们在生活中就有很多类似多态的例子,同为一种行为有很多种不同的表现形式就叫多态
1.java实现多态的前提
1.两者基于继承关系或实现关系的
2.子类或实现类必须对方法进行重写(没有重写的方法,不具有多态行为)
3.父类的引用子类的对象(接口的引用指向实现类的对象)
2.多态的对象转型
1.子类对对象转父类对象时,称为向上转型,这种转型是默认的,因此是自动转型
2.父类的引用转成子类对象,称为向下转型,向下转型就需要强转
我们在转型的时候,需要调用子类特有的方法时必须用子类的引用,多态的父类应用需要强转,为了避免Class Cast Exception 的发生Java在这里提供了instanceof关键字,给引用变量做类型的校检
instanceof:判断是否属于该类型
3.多态环境下,方法和属性的调用规则
1.属性:当子类和父类的属性相同时,以对象的左边应用类型为依据,所谓的"看左边"
2.方法:当new出来的对象的方法重写了,就掉用子类的方法,如果这个方法没有被重写,就调用父类的方法,其中静态方法无论是否重写,都已对象的左边的应用数据类型