所有型別都可歸類為開放型別
(open type)
或封閉型別
(closed type)
。開放型別是包含型別形參的型別。更明確地說:
·型別形參定義開放型別。 ·
當且僅當陣列元素型別是開放型別時,該陣列型別才是開放型別。 ·
當且僅當構造型別的乙個或多個型別實參為開放型別時,該構造型別才是開放型別。當且僅當構造的巢狀型別的乙個或多個型別實參或其包含型別的型別實參為開放型別時,該構造的巢狀型別才是開放型別。
封閉型別是不屬於開放型別的型別。
在執行時,泛型型別宣告中的所有**都在乙個封閉構造型別的上下文中執行,這個封閉構造型別是通過將型別實參應用該泛型宣告來建立的。泛型型別中的每個型別形參都繫結到特定的執行時型別。所有語句和表示式的執行時處理都始終使用封閉型別,開放型別僅出現在編譯時處理過程中。
每個封閉構造型別都有自己的靜態變數集,任何其他封閉構造型別都不會共享這些變數。由於開放型別在執行時並不存在,因此不存在與開放型別關聯的靜態變數。如果兩個封閉構造型別是從相同的未繫結泛型型別構造的,並且它們的對應型別實參屬於相同型別,則這兩個封閉構造型別是相同型別。
開放封閉原則和裝飾器
目錄wraps裝飾器 import time print time.time 顯示此時此刻距離1970年1月1日0點0分0秒的秒數,也叫時間戳。第乙個版本 import time def func1 time.sleep 1 讓程式停止1秒,模擬程式的執行耗時 print hello,word st...
值型別和引用型別概念梳理
一 值型別和引用型別 a 值型別 儲存在堆疊中,包括 int float demical bool char 型別b 引用型別 儲存在託管堆上,包括 object string 型別i.裝箱boxing 值型別 object 型別1.int i 100 object x i 隱式裝箱 2.int i...
C 設計模式 開放 封閉原則基本概念與例項
目錄 基本概念 舉乙個例子 在如那就的設計模式中,不能修改,但可以擴充套件的實現是一條十分重要的原則,它是開放 封閉原則 the open clossed principle,簡稱ocp 或開 關閉原則 開放 封閉原則,軟體實體 類 模組 函式等 應該可以擴充套件,但不能修改。asd 對於擴充套件是...