package course.polymorphism; /** * @author WanJl * @version 1.0 * @title Demo02 * @description 向下转型(向下造型) * @create 2026/7/24 */ public class Demo02 { /* 多态中的转型 向上造型 父类的引用指向子类的对象 向下造型 子类的引用指向父类的对象 格式: 子类类型 对象名=(子类类型)父类的引用名; 向下造型的前提一定是向上造型。 1、先要执行向上造型 : 父类类型 对象名=new 子类类型(); 2、再执行向下造型 : 子类类型 子类对象名=父类对象名; 前提:Student extends Person Person p=new Student(); Student s=(Student)p; 什么时候要使用向下造型呢? 需要使用子类对象特有的方法。 比如父类:外卖类 子类:麻辣烫类 、手撕烤鸭类、汉堡类 有这样一个方法: public void 点外卖(外卖类 wm){ //需要判断 什么样的外卖,执行什么样的操作 //这时候就需要判断外卖类的对象名 wm到底指向的手撕烤鸭对象还是麻辣烫对象 //并且需要进行向下转型 把外卖类转换为手撕烤鸭或麻辣烫 //这时候就需要有一个运算符 来判断 这个 wm 对象 到底是 手撕烤鸭类,还是 麻辣烫类 //使用 instanceof 运算符进行判断 // 格式: 对象名 instanceof 类型 // 通俗的理解: 判断 关键字 左边的变量,是否是属于 右边的类型,返回的是boolean类型结果 // 运算结果 是一个布尔值 if (wm instanceof 手撕烤鸭类){ // 比如 转型为手撕烤鸭类: 手撕烤鸭类 ssky=(手撕烤鸭类)wm; //调用手撕烤鸭类的特有方法 ssky.准备塑料手套(); }else if(wm instanceof 麻辣烫){ // 比如 转型为麻辣烫类: 麻辣烫类 mlt=(麻辣烫类)wm; mlt.准备筷子(); } } */ }