1.static
在類中定義的靜態成員變量,屬於該類的公共變量,在第一次使用時被初始化,對所有的對象來說,static成員變量只有一份;在類中定義的非靜態變量,屬於該類定義的變量。
static聲明的方法爲靜態方法,不在是針對某個對象調用,所以不能訪問非靜態成員。
可以通過對象引用或類名(不需要實例化)訪問靜態成員。
2.instanceof
instanceof是Java的一個二元操作符,和==,>,<是同一類東東。由於它是由字母組成的,所以也是Java的保留關鍵字。它的作用是測試它左邊的對象是否是它右邊的類的實例,返回boolean類型的數據。舉個例子:
String s = "I AM an Object!";
boolean isObject = s instanceof Object;
我們聲明瞭一個String對象引用,指向一個String對象,然後用instancof來測試它所指向的對象是否是Object類的一個實例,顯然,這是真的,所以返回true,也就是isObject的值爲True。
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在絕大多數情況下並不是推薦的做法,應當好好利用多態。
該instanceof關鍵字轉載博客:http://rodney.cnblogs.com/archive/2005/08/18/instanceof.html
Java關鍵字
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
淺析新站做SEO的三大要點
zuotuitui
2019-02-23 13:37:36
網絡搜索技術之網站內外部鏈接提高網站權重
爪哇
2019-02-23 13:12:07
中軟國際Java程序員筆試題
qingji999
2019-02-23 00:35:44
win7反覆自動關機
cto59306
2019-02-23 00:28:04
測試驅動開發全功略
peiyuefeng
2019-02-23 00:25:19
2014.12.10 下午oc基礎複習
Kris_Chain
2019-02-23 00:24:07
Java中的transient關鍵字
westsky
2019-02-23 00:07:04
C++面試基礎之static關鍵字詳解
riccoqu
2019-02-24 12:42:54
Spring Cloud Alibaba基礎教程:支持的幾種服務消費方式(RestTemplate、WebClient、Feign)
程序猿dd
2019-02-24 10:41:27