多态
多态
概念
注意
1.子类重写父类方法,执行子类
2.对象执行哪些方法主要看对象左边的类型,和右边关系不大!
如上图,s2.eat()方法不能调用
因为s2的类型是D1201Person,而这个类型里边没有eat方法
3.如果某个方法子类父类都有但是只有方法名一样,方法内容不一样
如果子类是重写父类方法,那么调用子类方法。因为子类的方法是重写后的,可能方法内容与父类不同
如果没有重写,调用父类
总而言之
子类型能调用的方法都是自己的或者继承父类的
父类型可以指向子类,但不能调用子类型独有的方法
如何在父类调用子类独有方法
如上图所示,将s2这个Person类型强制转换成Student类型以后,父类就可以调用子类了
相当于给s2降成了子类型
多态总结
1.多态是方法的多态,属性没有多态
2.父类和子类,有联系 类型转换异常——ClassCastaException!
3.存在条件:
-
-
方法需要重写:因为重写以后对于子类和父类方法名相同的方法,自动执行子类。如果不重写,就不确定要执行哪一个了
注意有些方法不能重写
1.static 方法,属于类,不属于实例
2.final 常量
3.private 方法
-
父类引用指向子类对象 //father s1 = new Son( ) ;