Main.java 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package J20250717.demo04;
  2. /**
  3. * @author WanJl
  4. * @version 1.0
  5. * @title Main
  6. * @description
  7. * @create 2025/7/17
  8. */
  9. public class Main {
  10. public static void main(String[] args) {
  11. //多态
  12. //父类引用指向子类的对象
  13. //是父类的引用,名义上是父类,名义上调用的也是父类的方法。
  14. //是子类的对象,实际上是子类,实际上执行的也是子类的方法。
  15. //Animal animal1=new Dog();
  16. //animal1.eat(); //方法运行结果?
  17. //Animal animal2=new Cat();
  18. //animal2.eat(); //方法运行结果?
  19. //animal2.drink();
  20. //父类的引用指向子类的对象
  21. SuperClass sc=new SubClass();
  22. sc.show();
  23. //sc.method(); //多态的弊端,不能使用子类特有的方法
  24. //解决方案:向下造型
  25. //将sc对象从父类的类型,转换为子类的类型
  26. //SubClass subClass=(SubClass) sc;
  27. //subClass.method();//这样就可以调用子类特有的方法了
  28. //将父类转型为另一个子类
  29. //SubClass02 subClass02=(SubClass02)sc;
  30. //subClass02.show();
  31. //subClass02.subClass02Method();
  32. if(sc instanceof SubClass02){ //如果sc对象是SubClass02类型,就转换为SubClass02类型的对象
  33. SubClass02 subClass02=(SubClass02)sc;
  34. subClass02.show();
  35. subClass02.subClass02Method();
  36. }else if(sc instanceof SubClass){//如果sc对象是SubClass类型,就转换为SubClass类型的对象
  37. SubClass subClass=(SubClass) sc;
  38. sc.show();
  39. subClass.method();
  40. }
  41. }
  42. }