java中instanceof和getClass()的做用

初學者不免有點混淆java中instanceof和getClass()的做用,  下面就來一一講解。java

   父類A:app

class A { }
     子類B:
class B extends A { }  
     構造對象
Object o1 = new A(); 
Object o2 = new B();

1、instanceof


    演示一:
一、o1 instanceof A => true  
二、o1 instanceof B => false 
三、o2 instanceof A => true // <================ HERE 
四、o2 instanceof B => true

分析==>this

用法:
        英文:result = object instanceof classspa

        中文:結果 = 某個實例對象  instanceof   某個類名.net

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

總結:
                   S(Object) instanceof T(Class)
    簡單來講,instanceof就是判斷對象S是不是T類的實例,或者是T類的子類實例。

2、getclass


    演示二:
一、o1.getClass().equals(A.class) => true 
二、o1.getClass().equals(B.class) => false
三、o2.getClass().equals(A.class) => false // <===============HERE
四、o2.getClass().equals(B.class) => true 
分析==>
getClass方法在JDK1.8中定義以下:
/**
*    Returns the runtime class of this Object
*/
public final native Class<?>  getClass();
功能:
     返回在運行時期對象的類。
getClass() will be useful when you want to make sure your instance is NOT a subclass of the class you are comparing with.
 

3、instanceof與getclass的運用

一、區別:
  • instanceof: 主要用來判斷  對象與類之間的關係。
  • getclass: 獲取運行時期對象的類。
二、運用:
      假設目前有父親、孩子兩個角色 
場景一:
    參加父親朋友公司開業活動
      此時,父親本人能夠親自參加;
      若是父親當天正在外地出差,此時他的孩子能夠替其參加。
當父類與子類均可以經過時,則使用instanceof
 
場景二:
    父親帶孩子去遊樂場玩,遊樂場規定,一些小型遊戲場地,只容許孩子進入,父親只能在門外觀看。
當限定到具體某一類時,則使用getclass+equals搭配
 
參考:
相關文章
相關標籤/搜索