怎样判断对象是否可以转换?

  可以使用instanceof运算符判断一个对象是否可以转换为指定的类型:
Object obj="Hello";
if(obj instanceof String)
 System.out.println("obj对象可以被转换为字符串");

下列语句哪一个将引起编译错误?为什么?哪一个会引起运行时错误?为什么?
  m=d;
  d=m;
  d=(Dog)m;
  d=c;(子类是否能给子类赋值)
  c=(Cat)m;

源代码:

class Mammal{}

class Dog extends Mammal {}

class Cat extends Mammal{}

public class TestCast

{

public static void main(String args[])

{

Mammal m;

Dog d=new Dog();

Cat c=new Cat();

m=d;//子类d可以给父类m赋值

//d=m;

d=(Dog)m;

//d=c;//false

//c=(Cat)m;

}

原因:子类对象可以直接赋给基类变量。

 

//d=m;改为d=m;时运行结果如下:

原因分析:子类对象可以直接赋给基类变量。基类对象要赋给子类对象变量,必须执行类型转换

 

//d=c; 改为d=c;时报错,运行结果如下:

原因分析:基类对象要赋给子类对象变量,必须执行类型转换,其语法是:子类对象变量=(子类名)基类对象名;

更改后的代码如下:

class Mammal{}

class Dog extends Mammal {}

class Cat extends Mammal{}

 

public class TestCast

{

public static void main(String args[])

{

Mammal m;

Dog d=new Dog();

Cat c=new Cat();

m=d;//子类d可以给父类m赋值

        d=m;

d=(Dog)m;

//d=c;//false 子类不可以给子类赋值

c=(Cat)m;

 

}

}

更改之后编译并没有报错,因为没有输出语句,所以没有输出。

转载于:https://www.cnblogs.com/1995-qxl/p/4964258.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值