casting java_Java---casting(对象转型)

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

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

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

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

public class TestCasting {

public void f(Animal a) {

System.out.println("name:" + a.name);

if (a instanceof Dog) {

Dog d = (Dog) a;

System.out.println("furColor:" + d.furColor);

}

}//如果传入的参数是Animal类的对象,则只打印name;如果传入的参数是它了子类Dog对象,则还需要打印furColor

public static void main(String[] args) {

Animal a=new Animal("animal");

Dog d=new Dog("Carl", "black");

System.out.println(d instanceof Animal);//true

System.out.println(a instanceof Dog);//false

System.out.println(a instanceof Animal);//true

Animal a1=new Dog("dog1", "white");

System.out.println("a1.name:"+a1.name+",a1.furColor:"+a1.furColor);//出错,基类的对象a1不能访问子类新增加的成员furColor

Dog d1=(Dog)a1;//可以将一个基类对象a1强制转换为子类对象d1

System.out.println("d1.name:"+d1.name+",d1.furColor:"+d1.furColor);

TestCasting test=new TestCasting();

test.f(a);//name:animal

test.f(d);//name:Carl  furColor:black

}

}

class Animal{

String name;

public Animal(String name) {

this.name=name;

}

}

class Dog extends Animal{

String furColor;

public Dog(String name,String furColor) {

super(name);

this.furColor=furColor;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值