怎樣判斷對象是否能夠轉換?

  能夠使用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;

 

}

}

更改以後編譯並無報錯,由於沒有輸出語句,因此沒有輸出。

相關文章
相關標籤/搜索