疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

java之对象转型


 

   

  对象转型(casting)

  1、一个基类的引用类型变量可以“指向”其子类的对象。

  2、一个基类的引用不可以访问其子类对象新增加的成员(属性和方法)。

  3、可以使用 引用变量 instanceof 类名 来判断该引用型变量所“指向”的对象是否属于该类或该类的子类。

  4、子类的对象可以当做基类的对象来使用称作向上转型(upcasting),反之成为向下转型

  (downcasting)。

  public class TestCasting{

  public static void main(String args[]){

  Animal animal = new Animal("name");

  Cat cat = new Cat("catName","blueColor");

  Dog dog = new Dog("dogName","yellowColor");

  System.out.println(animal instanceof Animal);

  System.out.println(cat instanceof Animal);

  System.out.println(dog instanceof Animal);

  //System.out.println(animal instanceof cat); //error

  animal = new Dog("dogAnimal","dogColor");

  System.out.println(animal.name);

  //System.out.println(animal.forColor); //error

  System.out.println(animal instanceof Animal);

  System.out.println(animal instanceof Dog);

  Dog d1 = (Dog)animal;

  System.out.println(d1.forColor);

  }

  }

  class Animal{

  public String name;

  public Animal(String name){

  this.name = name;

  }

  }

  class Cat extends Animal{

  public String eyeColor;

  public Cat(String name, String eyeColor){

  super(name);

  this.eyeColor = eyeColor;

  }

  }

  class Dog extends Animal{

  public String forColor;

  public Dog(String name, String forColor){

  super(name);

  this.forColor = forColor;

  }

  }

  运行结果:

  true

  true

  true

  dogAnimal

  true

  true

  dogColor