4.6Java对象转型(casting)

4.6Java对象转型(casting)

本章内容

  • 向上转型

  • 向下转型


向上转型

定义:

  • 父类引用指向子类对象,这个过程称之为向上转型

  • 属于自动转型类型

向下转型

特点:

  • 向上转型后的父类引用变量只能调用它的编译类型的方法,不能调用它运行时类型的方法。这个时候需要强制类型转换,称之为向下转型

对象的转型:

public class TestPolym {
   public static void main(String[] args) {
       //创建Animal对象
       Animal a = new Animal();
       animalCry(a );
  }

   //为了方便调用写一个方法
   static void animalCry(Animal a){
       a.shout();
       /*
       a的类型是Animal
       Dog是子类对象,子类对象给了父类引用
       父类的类型指向了子类的对象,这时候就发生了多态
       传的对象不一样,所以调用的shout方法也不一样,根据实参确定
       存在目的为了少些重载
       下面加子类可以方便调用
        */

       Dog d = new Dog(); //把Dog d 改为Animal d没有问题,到调用方法的时候还是运行Dog的方法
       /*
       在这个为止编译器认为这个类型是Animal不是Dog
       所以只能用Animal类下的方法而不能用Dog下的方法
        */
//       animalCry(d);
       animalCry(new Cat());
       Dog d2 = (Dog)d;
       /*
       编译器认为这个d2经过强制类型转换转成了Dog
       所以可以用Dog类下的方法
        */
  }
}

再转型的时候只能够父类和子类之间的自由转型和强制转型。同样继承于一个父类的两个子类之间不能够强制转型

It's a lonely road!!!
原文地址:https://www.cnblogs.com/JunkingBoy/p/14626252.html