123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- package J20250717.demo04;
- /**
- * @author WanJl
- * @version 1.0
- * @title Main
- * @description
- * @create 2025/7/17
- */
- public class Main {
- public static void main(String[] args) {
- //多态
- //父类引用指向子类的对象
- //是父类的引用,名义上是父类,名义上调用的也是父类的方法。
- //是子类的对象,实际上是子类,实际上执行的也是子类的方法。
- //Animal animal1=new Dog();
- //animal1.eat(); //方法运行结果?
- //Animal animal2=new Cat();
- //animal2.eat(); //方法运行结果?
- //animal2.drink();
- //父类的引用指向子类的对象
- SuperClass sc=new SubClass();
- sc.show();
- //sc.method(); //多态的弊端,不能使用子类特有的方法
- //解决方案:向下造型
- //将sc对象从父类的类型,转换为子类的类型
- //SubClass subClass=(SubClass) sc;
- //subClass.method();//这样就可以调用子类特有的方法了
- //将父类转型为另一个子类
- //SubClass02 subClass02=(SubClass02)sc;
- //subClass02.show();
- //subClass02.subClass02Method();
- if(sc instanceof SubClass02){ //如果sc对象是SubClass02类型,就转换为SubClass02类型的对象
- SubClass02 subClass02=(SubClass02)sc;
- subClass02.show();
- subClass02.subClass02Method();
- }else if(sc instanceof SubClass){//如果sc对象是SubClass类型,就转换为SubClass类型的对象
- SubClass subClass=(SubClass) sc;
- sc.show();
- subClass.method();
- }
- }
- }
|