在子类中加入eat,但是s2不可以被调用,因为父类中没有eat的方法
如果子类和父类都有的情况下,子类没有重写父类,就执行父类的,如果子类重写了父类,则执行子类的
对象能执行哪些方法,主要看左边的类型,与右边关系不大
Student能调用的方法都是自己的或者继承父类的
Person是父类型,虽然可以指向子类,但是不能调用子类独有的方法
多态的注意点
1、多态是方法的多态,属性没有多态
2、父类和子类要有联系,不然会出现转换异常 ---> ClassCastException
3、多态存在的条件:
<1>需要有继承关系,
<2>方法需要重写,
(但是有些方法不可以重写:static方法属于类,不可与重写,不属于实例
final修饰的方法是常量的,也不能重写
private修饰的方法是私有的,也不能重写)
不能重写就更不可能有多态
<3>父类的引用指向子类对象 : father f1=new son;