J2SE自學(八) 物件導向之封裝

2021-08-31 04:59:45 字數 2408 閱讀 4369

1、[size=large]封裝定義:隱藏屬性,方法與方法實現細節的過程稱為封裝(這個定義並不是很準確,但是可以這樣去理解),可以從兩個方面理解:

1)、隱藏屬性和方法。

2)、隱藏方法實現細節過程。

[/size]

補充:[color=red][size=large]封裝的優點:

(1)、隱藏類的實現細節;

(2)、讓使用者只能通過事先定製好的方法來訪問資料,可以方便地加入控制邏輯,限制對屬性的不合理操作;(因為如果直接對屬性操作時沒有限制的,比如年齡,如果直接呼叫屬性則可以設定負值!(比如:-10),而用方法來訪問可以設定一些限制)

(3)、便於修改,增強**的可維護性;

[/size][/color]

2、封裝的實現需要的知識:

1)、包

2)、訪問修飾符

3)、方法

3、[color=red][size=large]子類可以擁有父類所有public或者protected修飾屬性和方法(這裡沒有強調是否在同乙個類中以及是否在同乙個包中),如果這個子類和父類在同乙個包中,則也可以擁有父類所有預設的屬性和方法!但是如果不在同乙個包中,則不會擁有,那更別說private修飾的屬性和方法了

[/size][/color]

4、在專案中用的最多的修飾符就是public和private,而protected和預設修飾符用的相對較少!

5、[color=blue][size=large]實體類(entity):又稱為值物件(vo——value object)或者資料傳輸物件(dto—— data transfer object )。我們編寫應用程式的目的就是——處理資料,而資料儲存在資料庫中,而表中的資料如何在應用程式中體現呢?那就是乙個乙個的實體類,而且這個表名和實體類名是一致的,而且表中有多少個字段,則在實體類中就有多少個屬性,並且欄位名和屬性名也是一致的,同時在這個實體類中新增相應的public修飾的方法(也就是getters和setters)。

實體類中應該有哪些內容?

1)、私有的屬性(與資料庫中的字段一一對應)

2)、對這些屬性有相應的getters和setters方法

3)、無參的構造方法和有所有引數的構造方法(這兩個構造方法都是私有的!),當然也可以更具業務需求新增相應的構造方法

4)、在練習或者測試以及列印控制台的時候,可以將tostring方法重寫——這一點不要求

5)、生成equals方法(尤其是在框架的時候,至於hashcade方法現在在初始學習階段不是很要求)

其實實體類在運用資料庫的知識體現的更加明顯

[/size][/color]

6、[size=large]透明的:只關心結果,至於內部具體的執行過程或者細節是不關心的!其實這裡說的「透明的」也是看不見的(也就是封裝),而這個看不見是指具體的執行細節過程!但是結果我們是可以看見的!這就是「透明的」。如果在以後的學習程式設計過程說***是「透明的」,意思就是放心大膽的用吧,至於是如何的實現(這個實現是由封裝實現的)的不用我們管!

[/size]

7、[color=red][size=large]客戶端與伺服器端關係:

1)、狹義的客戶端與伺服器:乙個指的是軟體(如應用程式)乙個指的是硬體(如資料庫)

2)、廣義的客戶端與伺服器:比如現在有兩個類a和b,在某個業務中,類a呼叫類b,則類a就是客戶端,類b就是伺服器;在另外乙個業務中,類b呼叫類a,則類b就是客戶端,類a就是伺服器。於是就得出了,說***是客戶端,***是伺服器,一定要明確語義環境!(因為二者是相對的)

[/size][/color]

8、[color=darkred][size=large]final關鍵字:最終的

可以修飾:

1)、類:表示此類不能被繼承,如sun提供的string類、integer類、boolean類等

2)、屬性:①、必須賦初值;②、一般為public修飾;③、變數名全為大寫,而且此時變數的稱呼改變了——常量

3)、方法:表示此方法不能被重寫

[/size][/color]

9、[color=blue][size=large]static關鍵字:靜態的,唯一的,static修飾的屬性和方法都位於方法區中!

可以修飾:

1)、屬性:表示此屬性是類屬性(或者類變數),解決物件記憶體空間浪費。訪問該屬性的時候用「類名.屬性名」(而不用物件名.屬性名)

補充:一般情況下我們將屬性修飾為fianl的時候同時也加上static這個關鍵字(位於final之前),但是反之,是不可以的

2)、方法:表示此方法是類方法。

①、靜態方法中只能訪問靜態變數,不能訪問普通變數,同時也不能呼叫非靜態方法

②、靜態方法中不能使用this與super關鍵字

[/size][/color]

static

靜態塊是類載入的時候執行的,而構造方法(或者可以成為構造塊)是物件建立的時候執行的!

J2SE 物件導向

public static void main string args throws exception 資料型別 容量從小到大基本型別 byte short char int long float double boolean不能相互轉換 容量小的自動轉換為大的 容量大的轉換為小的時需加上強制轉換...

J2SE 物件導向總結

物件導向,即oo。我將物件導向的內容分為兩部分,一部分是物件導向的思想精髓,另一部分是物件導向在機器記憶體中的具體實現。下面是我的總結 檢視導圖中更詳細內容 這裡,我們重點對比總結以下內容 類和物件 1.從定義上 類是乙個概念,是乙個模板,規定了一類具有共同特點的物件。物件是是乙個例項,是類例項化的...

j2se之物件的上轉型物件

上轉型物件是將子類的物件賦值給父類的引用,形如 superclass sup new subclass 屬性,私有方法 靜態方法 final方法都是靜態繫結的,即編譯期確定的。其他方法是動態繫結的,即虛擬機器執行時確定。後者才可能出現override的情況。1 上轉型物件不能操作子類新增的成員變數 ...