物件導向三大特徵之封裝

2022-02-07 09:25:55 字數 1795 閱讀 3052

上半句+下半句。三流的書籍和部落格只會告訴你上半句,因為它們的作者自己也不知道下半句,而讓我們接近真理,走的更遠的是下半句。並且下半句往往非常簡單。

上半句就是一些半吊子挖出的天坑,就算下半句非常簡單。因為上半句的誤導產生的阻礙,讓無數人很多年也接觸不到講述真理的下半句。

時刻警醒:我們要學習的是講述真理的下半句。

1.什麼是封裝?

封裝:封裝說了2個內容,乙個是裝,乙個是封。

裝:提供了一種聚合方式,提供了一種組合方式。

把東西裝在一起,看作乙個整體。

1.能夠描述乙個事物

事物通常具有屬性和行為,我們通過資料和方法的整體可以描述這樣的事物。

並且相關的資料和方法被放到一起,提高了內部聚合度。

2.裝為我們提供了一種組合方式,我們通過裝可以組合出乙個東西,並且這個東西可以作為元件,繼續組合出其他東西。

能夠表達層次概念,和一些複雜的關係。

3.整體性。(1.用**體現概念 2.方便了使用)

1)用**體現概念,student類。

2)方便了使用:

引數不用再傳遞零散的資料,而是直接傳遞物件。

通過物件直接呼叫操作其內部資料的方法。

封:在裝的基礎上增加了訪問控制,對外只提供公共的訪問介面,其他的資訊被隱藏起來。(上半句)

好處:(下半句)

避免了不必要的耦合,隱藏的資訊對客戶端不可見,不會和客戶端發生耦合。我的**和客戶端**只能通過公共的訪問介面耦合。

當需要修改我們的**時,只要保證公共的訪問介面不變,客戶端**是不需要改變的。

2個特點,乙個是封,乙個是裝。

把存在一定關係的一些東西裝在一起。對外只提供公有的訪問介面,隱藏了內部具體的實現細節。

好處:把相關的東西放在一起聚合度高了。通過訪問控制,只對外提供公有的訪問介面。客戶端只能通過介面來訪問。

只要介面不改變,客戶端就不需要改變,降低了耦合。

我們把具體的實現細節隱藏了。這些東西不需要被客戶端知道,資訊隱藏,更安全。

什麼叫一定關係?

我們描述客觀的事物,事物總是具有一定的屬性和方法,我們可以認為這些屬性和方法相關的,可以放到一起。

因為事物通常具有屬性和行為,單獨用資料,或者方法都無法描述。

裝讓我們可以將資料和方法放在一起,看作乙個整體。這樣乙個整體就可以用來描述事物。

這種方式和單獨用資料+方法的區別:

1.能夠描述乙個事物 2.層次 3.整體性。(1.明確了概念,方便了使用)

1.能夠描述乙個事物:

因為事物通常具有屬性和行為,我們可以用資料和方法的整體來描述事物。

2.基本的東西,裝在一起,產生乙個整體,這個整體可以作為元件來建立另外一些整體。產生層次。

對應於實際,可以用來描述不同層次的事物。

舉個例子:

姓名,年齡,建立乙個學生,學生可以作為乙個元件,來構建新的整體。

3.整體性。

1)明確了概念(在**上): 有乙個名字來表示這個整體。類名,包名。

2)方便了使用。

例子1:我們去菜市場買菜,為啥要個塑膠袋呢。

例子2:如果你給別人一些東西,先給個a,在給個b,再給個......

現在,我直接給你一包東西。然後說你要的都在這裡面。想用啥自己取。

具體表現:類和物件,包。

類:對一類具體事物的抽象。

物件:描述乙個具體的事物。

包:描述的是乙個模組,乙個子系統。

這個可以用來構造不同粒度的概念。

姓名,年齡,建立學生。

多個學生,班級名,建立班級。

多個班級,學校名,建立學校。

基本型別,學生,班級,學校。粒度不斷變大。

物件導向三大特徵之封裝

將屬性封裝起來,不讓外部直接訪問 提供getset方法訪問 package com.lv.am 資料的封裝 資料的實體類物件 除了這個商品的物件 我們還有什麼現實生活中也是這樣來定義乙個實體類 public class goods public void setname string name pu...

物件導向三大特徵 封裝

一 封裝 1 程式的問題 無法保證資料的安全性,同時也無法保證資料的有效性。二 封裝的要求 1 private 私有的,被private修飾的內容只能在類的內部使用public 公開的 2 為私有的屬性提供公開的get set方法。a為屬性賦值 set方法 public void set屬性名 資料...

物件導向的三大特徵 封裝

封裝 encapsulation 通俗的講就是呼叫方僅知道被呼叫方能做什麼,怎麼做的不知道,封裝是物件導向模組化的基礎。通過封裝將物件執行所需的方法和資料封裝在程式物件中,隱藏物件的屬性和實現細節。當這個物件發生有bug時,僅需修改物件內部的方法,不會擴散到程式其它部分。示例 在 程式中在會員生日時...