資料抽象和封裝提供了兩個重要優點:
避免類內部出現無意的、可能破壞物件狀態的使用者級錯誤。
隨時間推移,可以根據需求改變和缺陷(bug)報告來完善類實現,而無需改變使用者級**。
詳細說明:
僅在類的私有部分定義資料成員,類的設計者就可以自由地修改資料。如果實現改變了,那麼只需檢查類**來了解此變化可能造成的影響。如果資料為公有的,則任何直接訪問原有資料成員的函式都可能遭到破壞。在程式可重新使用之前,有必要定位和重寫依賴原有表示的那部分**。
同樣地,如果累的內部狀態是私有的,則資料成員的改變只可能發生在有限的地方。避免資料中出現使用者可能引入的錯誤。如果有缺陷會破壞物件的狀態,就在區域性位置搜尋缺陷;如果資料是私有的,那麼只有成員函式可能對該錯誤負責。對錯誤的搜尋是有限度的,從而大大方便了程式的維護和修正。
如果資料是私有的,並且沒有改變成員的介面,則操縱類物件的使用者函式無序改變。
封裝與抽象
封裝是oo的重要特徵,這一點是毫無疑問的,至於算不算的上是oo的三大特徵之一 另外兩個是繼承 多型 目前仍有爭論,我也不想在這個問題上作過多的糾纏。什麼是封裝呢?封裝是一項將低層次的元素組合起來形成新的,高層次實體的技術。被封裝的元素隱藏了它們的實現細節。封裝是人們對現實世界中解決問題時,為了進行簡...
抽象與封裝
抽象方法 抽象方法,是指沒有方法體的方法,同時抽象方法還必須使用關鍵字abstract做修飾。有抽象方法的類就是抽象類,抽象類要使用abstract關鍵字宣告。定義乙個抽象類 abstract class a public abstract void print 抽象方法,沒有方法體,有abstra...
抽象與封裝區別 轉
抽象 處理大而複雜的問題的重要手段是抽象,強調事物本質的東西。對程式抽象而言,乙個語言結構的抽象強調的是該結構外部可觀察的行為,與該結構的內部實現無關。抽象包括過程抽象和資料抽象。封裝封裝是把乙個語言結構的具體實現細節作為乙個黑匣子對該結構的使用者隱藏起來的一種機制,從而符合資訊隱藏原則。封裝包括過...