1. 多态是方法的多态,属性没有多态性。
2. 编写程序时,如果想调用运行时类型的方法,只能进行类型转换。不然通不过编译器的检查。但是如果两个没有关联的类进行强制转换,会报:ClassCastException。 比如:本来是狗,我把它转成猫。就会报这个异常。
3. 多态的存在要有3个必要条件:要有继承,要有方法重写,父类引用指向子类对象。
代码:
结果:
在animal类构造方法中,this指向的是Cat new出来的对象,但是this.name指向的是animal的name,this.voice调的是cat的voice方法。this,super通过隐式参数传到方法中去。