为了账号安全,请及时绑定邮箱和手机立即绑定

为什么强制转换的对象dog2不能打印出来呢

public class Initial2 {	
@SuppressWarnings("unused")	
public static void main(String[] args) {		
// TODO Auto-generated method stub		
Dog dog=new Dog();		
Animal animal=dog;//向上类型转换,隐式转换		
if(animal instanceof Dog){		
Dog dog2=(Dog)animal;//向下类型转换,强制类型转换		
System.out.println("Dog型转换成了Animal型了");		
}else{		
System.out.println("Dog型不能转换成Animal型");		
}		
if(animal instanceof Cat){			
Cat cat=(Cat)animal;		
}else{			
System.out.println("不能转换成Cat型");		
}								
System.out.println(dog);		
System.out.println(animal);		
System.out.println(dog2);//难道强制转换的对象不能打印					
}
}

https://img1.sycdn.imooc.com//5ca1572500015b1d09810348.jpg

正在回答

5 回答

dog2对象在if语句中,所以才打印不出来,有可能不执行

0 回复 有任何疑惑可以回复我~

public static void main(String[] args) {

// TODO Auto-generated method stub

dog dog1=new dog();

dog dog2=new dog();

cat cat1=new cat();

 

animal animal1=cat1;

if(animal1 instanceof dog)

{

dog1=(dog)animal1;

System.out.println("狗可以转化成动物类");

}

else

{

System.out.println("狗不可以转化成动物类");

}

if(animal1 instanceof cat)

{

cat1=(cat)animal1;

System.out.println("猫可以转化成动物类");

}

else

{

System.out.println("猫不可以转化成动物类");

}

System.out.println(dog1);       

System.out.println(animal1);    

System.out.println(cat1);

}

}


0 回复 有任何疑惑可以回复我~

不是Dog型转换成了Animal型了
是把Animal型强制转换成Dog型

建议多看几遍

0 回复 有任何疑惑可以回复我~

强制转换完的对象也是对象,当然可以打印。你的错误在于dog2在if{}里,外面取不到,

把System.out.println(dog2);放在第9行就可以了

1 回复 有任何疑惑可以回复我~

向下类型转换时容易出错,需要加instanceof可以防止转换出错。

0 回复 有任何疑惑可以回复我~
#1

慕无忌7406412 提问者

你这个回答完全没沾到边啊!
2019-04-02 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么强制转换的对象dog2不能打印出来呢

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信