覆寫
乙個例項方法可以覆寫(override)在其超類中可訪問到得具有相同簽名的所有例項方法
[jls 8.4.8.1],從而使能了動態分派(dynamic dispatch);換句話說,vm將給予例項的
執行期型別來懸著呼叫的覆寫方法[jls 15.12.4.4]。覆寫是物件導向程式設計技術的基礎,
並且是惟一沒有被普遍勸阻的名字重用形式:
class base
}class derived extends base // overrides base.f()
}
隱藏
乙個域、靜態方法或成員型別可以分別隱藏(hide)在其超類中可訪問到得具有相同名字
(對方法而言就是相同的方法簽名)的所有域、靜態方法或成員型別。
隱藏成員將阻止其被繼承[jls 8.3,8.2.8.2,8.5]
class base
}class derived extends base // hides base.f()
}
過載
在某個類中的方法可以過載(overload)另乙個方法,只要它們具有相同的名字和不同的簽名。
由呼叫所指定的過載方法是在編譯期選定的[jsl 8.4.9, 15.12.2]
class circuitbreaker // int overloading
public void f(string s){} // string overloading
}
遮蔽
乙個變數、方法或型別可以分別遮蔽(shadow)在乙個閉合的文字範圍內的
具有相同名字的所有變數、方法或型別。如果乙個實體被遮蔽了,那麼你用它
的簡單名是無法應用到它的;根據實體的不同,有時你根本就無法引用到它。
class whokonws
}
儘管遮蔽通常是被勸阻的,但是有一種通用的慣用法確實涉及遮蔽。
--》構造器,普遍認為這種風格實惠超過風險。
class belt
}
遮掩
乙個變數可以遮掩(obscure)具有相同的名字的乙個型別,只要它們都在同乙個範圍內:
如果這個名字被用於變數與型別都被許可的範圍,那麼它將引用到變數上。相似的,
乙個變數或乙個型別可以遮掩乙個包。遮掩是惟一一種兩個名字位於不同的名字空間的
名字重用形式,這些名字空間包括:變數、包、方法或型別。如果乙個型別或乙個包
被遮掩了,那麼你不能通過其簡單名引用到它,除非是這樣乙個上下午環境中,
即語法只允許在其名字空間中出現一種名字。遵守命名習慣可以極大地消除產生遮掩的可能性。
class obscure
}
附錄A 術語表
這裡列出了本書中用到的一些技術術語,在別的地方你也能找到它們,不過我想還是把它們集中一處,以便查詢。堆表示程式可用的記憶體區,也叫動態記憶體區。堆記憶體的分配與釋放次序是隨機的,這就是說,如果你按次序分配三塊記憶體,那麼到時並不按分配時的次序釋放記憶體。堆管理器會負責所有操作,你只需簡單地使用get...
PMP常用術語表
ac 實際成本 acwp 已完工作實際成本 bac 完工預算 ccb 變更控制委員會 coq 質量成本 cpaf 成本加獎勵費用合同 cpff 成本加固定費用合同 cpi 成本績效指數 cpif 成本加激勵費用合同 cpm 關鍵路徑法 cv 成本偏差 eac 完工估算 ef 最早完成日期 emv 預...
基本術語表 WF
術語 定義 activity 活動 windows workflow foundation 中的程式行為單元。可將單個活動組合在一起,形成更複雜的活動。activity action 活動操作 用於公開工作流和活動執行的 的資料結構。引數定義流入和流出活動的資料。每個引數都有特定的方向 in out...