java多态的理解,向上转型和向下转型


众所周知:java是一门面向对象的语言.
众所周知:面向对象具有封装,继承,多态三大特性.

怎么理解多态呢?
一个事物的多种表现形式.比如说你是张三,你既是一个人类存在于地球,又是一个学生存在于学校,还是一个孩子存在于家庭.
在java语言中,当子类class Student继承父类class Person后,就会既是Person也是Student.
所以可以认为继承是多态的前提.

在java代码中,要具体辨别多态,就要观察:父类的引用有没有指向子类的对象.
子类中对父类方法的重写就是多态的体现.
同一个类中方法的重载也是多态的体现.

那么什么是向上转型和向下转型呢?
在基本数据类型中,有自动类型转换和强制类型转换.
当数据精度高的类型转换到数据精度低的类型不进行强制转换就会报错.

向上转型就可以类比自动类型转换
向下转型就可以类比强制类型转换

注意:

这里是子类引用指向了父类对象,会报错,不是向下转型.