对象的转型

 
//对象转型实例


class TestAnimal{
 public static void main(String[] args){
  TestAnimal test = new TestAnimal();
  
  Animal a = new Animal("animalName");
  Cat c = new Cat("mimi","yellow");
  Dog d = new Dog("wangwang","black");
  
  test.f(a);
  test.f(c);
  test.f(d);
 }


  //方法f()内的变量为Animal类的引用,该引用可以指向Animal的子类的对象
  //即Dog类和Cat类的对象
  
  public void f(Animal a){
   System.out.println("Name: " + a.name);
   if(a instanceof Cat){
    //由于变量a为基类Animal的引用,基类无法访问子类中新增的方法和属性,
    //所以必须将a强制转型为子类的引用

    Cat cat = (Cat)a;
    System.out.println("eyesColor: " + cat.eyesColor);
   }
    else if(a instanceof Dog){
     Dog dog = (Dog)a;
     System.out.println("furColor: " + dog.furColor);
    }
  }
}

//基类Animal
class Animal{
 public String name; 
 Animal(String n){
  this.name = n;
 }
}
 
//子类Cat 
class Cat extends Animal{
 public String eyesColor;
 Cat(String n,String c){
  super(n);
  this.eyesColor = c;
 }
}

//子类Dog
class Dog extends Animal{
 public String furColor;
 Dog(String n,String f){
  super(n);
  this.furColor = f;
 }
}
 

 

运行结果:

 Name:animalName

 Name:mimi

 eyesColor:yellow

 Name:wangwang

 furColor:black

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

带头大哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值