程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> java中的instanceof,javainstanceof

java中的instanceof,javainstanceof

編輯:JAVA綜合教程

java中的instanceof,javainstanceof


instanceof是Java、php的一個二元操作符(運算符),和==,>,<是同一類東西。由於它是由字母組成的,所以也是Java的保留關鍵字。它的作用是判斷其左邊對象是否為其右邊類的實例,返回boolean類型的數據。可以用來判斷繼承中的子類的實例是否為父類的實現。相當於c#中的is操作符。java中的instanceof運算符是用來在運行時指出對象是否是特定類的一個實例。instanceof通過返回一個布爾值來指出,這個對象是否是這個特定類或者是它的子類的一個實例。

 

instanceof的使用

一、

比如我們寫了一個處理賬單的系統,其中有這樣三個類: public class Bill {//省略細節} public class PhoneBill extends Bill {//省略細節} public class GasBill extends Bill {//省略細節} 在處理程序裡有一個方法,接受一個Bill類型的對象,計算金額。假設兩種賬單計算方法不同,而傳入的Bill對象可能是兩種中的任何一種,所以要用instanceof來判斷: public double calculate(Bill bill) { if (bill instanceof PhoneBill) { //計算電話賬單 } if (bill instanceof GasBill) { //計算燃氣賬單 } ... } 這樣就可以用一個方法處理兩種子類。 然而,這種做法通常被認為是沒有好好利用面向對象中的多態性。其實上面的功能要求用方法重載完全可以實現,這是面向對象編程應有的做法,避免回到結構化編程模式。只要提供兩個名字和返回值都相同,接受參數類型不同的方法就可以了: public double calculate(PhoneBill bill) { //計算電話賬單 } public double calculate(GasBill bill) { //計算燃氣賬單 } 所以,使用instanceof在絕大多數情況下並不是推薦的做法,應當好好利用多態。     二、對象類型的強制轉換 例如: 繼承關系 class Manager extends Employee ---------------------------------------------------------- public void doSomething(Employee e) { if ( e instanceof Manager){ Manager m = (Manager) e ; } }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved