封裝與抽象
封裝和抽象是OOP(面向對象編程)語言中兩個不同但又相關的概念。封裝是將數據和行為作為單個實體組合在一起的概念。另一方面,抽象是表示實體行為與實現方式的過程。
什麼是封裝?
封裝是將數據和操作它們的操作封裝到單個實體中的過程。這實際上意味著為了訪問數據,應該使用某些預定義的方法。換句話說,封裝的數據不能直接訪問。這確保了數據的完整性,因為用戶無法按自己的意願直接訪問和修改數據。用戶只能通過對用戶公開可用的方法來獲取或設置數據值。這些方法通常提供數據驗證,以便只允許在字段中**適當格式的數據。因此,封裝的好處有三個方面。通過封裝,程序員可以使類的字段變為只讀或只寫。其次,類可以完全控制存儲在其字段中的內容。最後,類的用戶不必擔心它的數據是如何存儲的。在Java中,程序員可以將所有實例變量聲明為private,並提供get和set方法(公共的)來訪問和修改私有字段。
什麼是抽象?
抽象是將表示細節與實現細節分離的過程。開發者鬆了一口氣,這樣做的細節就更復雜了。相反,程序員可以專注於實體的表示或行為細節。簡單地說,抽象關注的是如何使用某個實體,而不是如何實現它。抽象本質上隱藏了實現的細節,這樣即使實現方法隨著時間的推移而改變,程序員也不必擔心它會如何影響他的程序。一個系統可以被抽象成幾個層次。例如,低級抽象層將顯示硬件細節,而高級抽象層將只顯示實體的業務邏輯。抽象這個詞可以用來指實體和過程,這會導致一些混淆。作為一個過程,抽象意味著提取必要的細節,而忽略一個或一組項目的不重要的細節;而作為一個實體,抽象意味著一個只有基本細節的實體的模型或視圖。在Java中,程序員可以使用關鍵字abstract將一個類聲明為一個抽象實體,抽象實體表示真實世界實體的基本定義特徵。
封裝和抽象有什麼區別?