3 回答
TA貢獻1784條經驗 獲得超8個贊
封裝是用作抽象的一部分的策略。封裝是指對象的狀態-對象封裝其狀態并將其從外部隱藏起來;類的外部用戶通過其方法與之交互,但無法直接訪問類的狀態。因此,該類抽象出了與狀態相關的實現細節。
抽象是一個更通用的術語,它也可以通過(以及其他)子類實現。例如,該接口List在標準庫是用于項的序列,可以通過位置索引的抽象,的具體實例List是一個ArrayList或一個LinkedList。與List摘要交互的代碼,它使用的是哪種列表的詳細信息。
如果不通過封裝隱藏基礎狀態,則通常不可能實現抽象-如果類公開其內部狀態,則它無法更改其內部工作方式,因此無法抽象。
TA貢獻1906條經驗 獲得超3個贊
抽象是用更簡單的術語描述事物的概念,即抽象出細節,以便專注于重要的事物(例如,在抽象藝術中也可以看到,例如,藝術家專注于圖像的基本組成部分,例如顏色或形狀)。同一思想通過使用繼承層次結構轉換為OOP,在繼承層次中,更多抽象概念位于頂部,更具體的思想位于底部,它們基于抽象。在其最抽象的級別上,根本沒有實現細節,也許只有很少的共性,隨著抽象性的降低而增加了這些共性。
例如,最頂層可能是帶有單個方法的接口,而下一層則提供了幾個抽象類,這些抽象類可能會也可能不會填寫有關頂層的某些細節,而是通過添加自己的抽象方法進行分支,那么對于這些抽象類中的每一個,都是提供所有其余方法的實現的具體類。
封裝是一種技術。它可能是也可能不是用于輔助抽象,但是肯定是關于信息隱藏和/或組織的。它要求以某種方式對數據和功能進行分組-當然,良好的OOP實踐要求應將它們按抽象分組。但是,還有其他用途僅有助于維護性等。
TA貢獻1757條經驗 獲得超7個贊
封裝是抽象的一部分,或者我們可以說它是抽象的子集
它們是不同的概念。
抽象是完善對象的所有不需要/不重要屬性并僅保留最適合您的域的特征的過程。
例如,對于一個人:您決定保留名字和姓氏以及SSN。年齡,身高,體重等無關緊要。
抽象是設計開始的地方。
封裝是下一步,它將識別在抽象過程中接受的要保留的屬性上適合的操作。數據與作用于它們的操作的關聯。
即數據和方法捆綁在一起。
- 3 回答
- 0 關注
- 368 瀏覽
添加回答
舉報
