语法:赋值语句为子类对象赋值给父类数据类型
多态:new 子类对象 赋值给到 父类的数据类型中
重点:虚拟方法调用,当子类的方法发生覆盖时,多态的调用是调用的实体的方法
编译是检查父类的方法名称,不检查子类
多态由于子类的不同因此存在不确定性
多态中父类变量引用的地址和子类相同
多态中成员方法会覆盖但是成员变量不会覆盖
多态不会调用子类特有的方法和变量为多态
多态的意义:一个父类的数组可以存放多个子类元数
多态数组:定义一个数组,数组的内容将不同的子类对象都汇总到同一个集合
多态数组-对象类型转换:
代码: chinese ch = (chinese) p
基础数据类型数据转换是改变的底层的二进制代码
引用数据类型的数据转换没有改变数据本身(存储)
语法: 优先级 . 的优先级要高于() (类型)对象实体.方法() -- 此时方法只能调用对象实体的方法不能调用类型转换的方法-- 正确调用 ((类型)对象实体).方法()
关键字:instanceof 用于判断对象和类的关系 "String" instanceof String -- 返回True
Chinese ch = (Chinese)p; // 造型存在报错的风险 因为对象p可能不能转为想要的类型
多态参数调用不同子类的不同方法,通过if 条件语句判断 出子类类型,进而调用不同的子类方法
数据类型转换:
1.基础数据 1.1小的数据类型可以自动的转为大的数据类型 1.2 大的数据类型需要强制转为小的数据类型
2.对象的数据类型转化(造形):
1.1子类可以不需要强转为父类 (子类的属性包含父类)
1.2父类 需要强转为子类
1.3无继承关系的造形是不合规范的
基础数据类型的转换成为强制转换
引用类型的转化成为造形
多态是高级编程的标志