1.多态为同一方法根据发送对象的不同而采用多种不同的行为方式
2.一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多
3.多态存在的条件
1.有继承关系
2.子类重写父类方法
3.父类引用指向子类对象
4.多态是方法的多态,属性没有多态
5.由于多态需要被重写,因static,final,private都不可以被重写,所以皆不存在多态
6.图中定义了Person类(父类),Student类(子类),以及主程序栏Application
Person类中定义了一个run方法,Student类中定义了一个重写Person类的run方法一个一个单独的eat方法
1.主程序中new了三个实例对象,其中new的都是Student类型的,由于Person类为Student类的父类,可以指向子类,所以new Person类型的Student类,同理,Object为所有类的父类,也可new Object类型的new Student;
2.当只调用时是s2.run时,输出的为run;但当调用是时s2.run和s1.run两个方法时,二者输出结果为son,son;这是因为Student子类重写了父类的run方法,因此仅会执行子类的输出结果为
3.当调用的是是s1.eat时,会输出子类的eat,但当调用s2.eat时,系统会进行报错,这是因为eat方法仅存在于子类Student类中,父类Person无法进行调用,但可想如图中所谓进行强制类型转换为Student类即可进行调用