ooday08 Java_多态_向下强制转型

笔记:

  1. 多态:

    • 表现:

      • 同一个对象被造型为不同的类型时,有不同的功能

        --对象的多态:我、你、水......------所有对象都是多态的(明天体会)

      • 同一类型的引用指向不同的对象时,有不同的实现

        --行为的多态:cut(),move(),getImage()--所有抽象方法都是多态的

    • 向上造型/自动类型转换:--------------------代码复用

      • 超类型的引用指向派生类的对象
      • 能点出来什么,看引用的类型
      • 能造型成为的数据类型有:超类+所实现的接口
    • 强制类型转换,成功的条件只有如下两种:

      • 引用所指向的对象,就是该类型
      • 引用所指向的对象,实现了该接口或继承了该类
    • 强转时若不符合如上条件,则发生ClassCastException类型转换异常

      建议:在强转之前先通过instanceof来判断引用的对象是否是该类型

点击查看代码
  public class MultiTypeDemo {
      public static void main(String[] args) {
          Aoo o = new Boo();
          Boo o1 = (Boo)o;     //引用o所指向的对象,就是Boo类型
          Inter o2 = (Inter)o; //引用o所指向的对象,实现了Inter接口
          //Coo o3 = (Coo)o; //运行时ClassCastException类型转换异常
          if(o instanceof Coo){ //false
              Coo o4 = (Coo)o;
          }else{
              System.out.println("o不是Coo类型");
          }
          /*
          System.out.println(o instanceof Boo);   //true
          System.out.println(o instanceof Inter); //true
          System.out.println(o instanceof Coo);   //false
           */
      }
  }
  
  interface Inter{ }
  class Aoo{ }
  class Boo extends Aoo implements Inter{ }
  class Coo extends Aoo{ }

posted @ 2022-03-22 09:35  Y_Zoran  阅读(58)  评论(0)    收藏  举报
-->