Java中instanceof關鍵字的理解


java 中的instanceof 運算符是用來在運行時指出對象是否是特定類的一個實例。instanceof通過返回一個布爾值來指出,這個對象是否是這個特定類或者是它的子類的一個實例。

用法:
result = object instanceof class
參數:
Result:布爾類型。
Object:必選項。任意對象表達式。
Class:必選項。任意已定義的對象類。
說明:
如果 object 是 class 的一個實例,則 instanceof 運算符返回 true。如果 object 不是指定類的一個實例,或者 object 是 null,則返回 false。

但是instanceof在Java的編譯狀態和運行狀態是有區別的:

在編譯狀態中,class可以是object對象的父類,自身類,子類。在這三種情況下Java編譯時不會報錯。

在運行轉態中,class可以是object對象的父類,自身類,不能是子類。在前兩種情況下result的結果為true,最后一種為false。但是class為子類時編譯不會報錯。運行結果為false。

例子:

接口Person

public interface Person {
public void eat();
}

實現類People

public class People implements Person {
private int a=0;
 @Override
 public void eat() {
  System.out.println("======"+a);
  
 }

}

子類xiaoming:

public class xiaoming extends People {
private String name;

@Override
public void eat() {
 System.out.println("+++++++++");
}
}

主函數

public static void main(String[] args) {
  People p=new People();
  xiaoming x=new xiaoming();
  System.out.println(p instanceof Person);
  System.out.println(p instanceof xiaoming); -----2
  System.out.println(x instanceof Person);
  System.out.println(x instanceof People);
 }

注意:上面2處的代碼在編譯時不會報錯。

運行結果:

true
false
true
true

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM