Java 教程

Java 控制語句

面向物件程式設計

Java 內建類

Java 檔案處理

Java 錯誤與異常

Java 多執行緒

Java 同步

Java 網路程式設計

Java 集合

Java 介面

Java 資料結構

Java 集合演算法

高階 Java

Java 雜項

Java APIs & 框架

Java 類引用

Java 有用資源

Java - instanceof 關鍵字



Java instanceof 關鍵字是一個運算子,僅用於物件引用變數。此運算子檢查 Java 物件是否屬於特定型別(類型別或介面型別)。

語法

以下是 Java 程式設計中 instanceof 運算子的語法。

( Object reference variable ) instanceof (class/interface type)

如果運算子左側變數引用的物件透過右側類/介面型別的 IS-A 檢查,則結果為 true。

IS-A 關係

IS-A 的意思是:此物件是一種那種物件。讓我們看看如何使用extends關鍵字實現繼承。

public class Animal {
}

public class Mammal extends Animal {
}

public class Reptile extends Animal {
}

public class Dog extends Mammal {
}

現在,根據上面的例子,在面向物件的術語中,以下是正確的:

  • Animal 是 Mammal 類的超類。
  • Animal 是 Reptile 類的超類。
  • Mammal 和 Reptile 是 Animal 類的子類。
  • Dog 是 Mammal 和 Animal 類的子類。

現在,如果我們考慮 IS-A 關係,我們可以說:

  • Mammal IS-A Animal
  • Reptile IS-A Animal
  • Dog IS-A Mammal
  • 因此:Dog IS-A Animal

使用 extends 關鍵字,子類將能夠繼承超類的所有屬性,除了超類的私有屬性。

我們可以使用 instance 運算子確保 Mammal 實際上是一個 Animal。

例子

class Animal {
}

class Mammal extends Animal {
}

class Reptile extends Animal {
}

public class Dog extends Mammal {

   public static void main(String args[]) {
      Animal a = new Animal();
      Mammal m = new Mammal();
      Dog d = new Dog();

      System.out.println(m instanceof Animal);
      System.out.println(d instanceof Mammal);
      System.out.println(d instanceof Animal);
   }
}

輸出

true
true
true

由於我們已經很好地理解了extends關鍵字,讓我們看看如何使用implements關鍵字獲得 IS-A 關係。

通常,implements關鍵字與類一起使用以繼承介面的屬性。介面永遠不能被類擴充套件。

例子

public interface Animal {
}

public class Mammal implements Animal {
}

public class Dog extends Mammal {
}

instanceof 關鍵字

讓我們使用instanceof運算子來檢查 Mammal 是否實際上是 Animal,以及 dog 是否實際上是 Animal。

例子

interface Animal{}
class Mammal implements Animal{}

public class Dog extends Mammal {

   public static void main(String args[]) {
      Mammal m = new Mammal();
      Dog d = new Dog();

      System.out.println(m instanceof Animal);
      System.out.println(d instanceof Mammal);
      System.out.println(d instanceof Animal);
   }
}

輸出

true
true
true
java_basic_syntax.htm
廣告