多态变量和向上造型
子类和子类型
类定义了类型
子类定义了子类型
子类的对象可以被当做父类的对象来使用
赋值给父类的变量
传递给需要父类对象的函数
放进存放父类对象的容器里
子类型与赋值
子类的对象可以赋值给父类的变量
子类和参数传递
子类的对象可以传递给需要父类对象的函数
子类型和容器
子类的对象可以放在存放父类对象的容器里
多态变量
Java的对象变量是多态的,它们能保存不止一种类型的对象
它们可以保存的是声明类型的对象,或声明类型的子类的对象
就把子类的对象赋值给父类的变量的时候,就发生了向上造型
在Java当中,所有的对象变量都是多态,多态的意思就是多种形态,就是这个时候它可以放这个类型的变量,过一会又可以放另一个类型的变量
在Java的系统里面,所有的对象变量全部都是多态变量,多种形态都可以存在的
当我们把一个子类的对象赋给一个多态变量的时候,就发生了向上造型
向上造型
造型的意思就是,把一个类型的对象,赋给另外一个类型的变量,这个过程叫做造型
造型cast
子类的对象可以赋值给父类的变量
注意!java中不存在对象对对象的赋值!!
父类的对象不能赋值给子类的变量!
可以用造型:
(只有当v这个变量实际管理的是Car才行)
造型
用括号围起来类型放在值的前面
对象本身并没有发生任何变化
所以不是类型转换
运行时有机制来检查这样的转化是否合理 ClassCastException
类型转换和造型是不同的,类型转换做完之后,直接把类型转成另外一个类型,而造型做完以后,把这个当做另外一个类型来看待,并没有把它当成另外一个类型来判断
向上造型
拿一个子类的对象,当做父类的对象来用
向上造型是默认的,不需要运算符
向上造型总是安全的