怎样判断对象是否能够转换?

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

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

源代码:blog

class Mammal{}字符串

class Dog extends Mammal {}编译

class Cat extends Mammal{}ast

public class TestCastclass

{变量

public static void main(String args[])语法

{im

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;

 

}

}

更改以后编译并无报错,由于没有输出语句,因此没有输出。

相关文章
相关标签/搜索