物件導向之封裝

2021-09-18 04:38:32 字數 1694 閱讀 4623

定義:影藏事物的屬性和實現的細節,僅對外提供公共的訪問方式

封裝的好處:

1.隱藏了事物的細節

2.提高了**的復用性

3.提高了安全性

封裝的實現:

使用private關鍵字進行修飾,被private修飾的成員只能在本類中使用

setter和getter

封裝需要搭配set和get方法

set(設定器)沒有返回值,但有引數

get(獲取器)需要返回值,但沒有引數

//學生類

public class student

//通過獲取器獲得姓名

public string getname()

//通過設定器設定姓名

public void setname(string name)

//通過獲取器獲得成績

public int getscore()

//通過設定器設定成績

public void setscore(int score)

} //測試類

public class test

1.將類載入到方法區

2.在堆記憶體中開闢空間,放入新建物件

3.在棧記憶體中開闢空間,放物件的引入

4.物件中的屬性執行預設初始化

5.物件中的屬性進行顯示初始化

6.構造方法初始化

7.將物件位址賦值給物件引用

靜態屬性的特點和作用

1.靜態屬性是本類所有物件公用的,靜態屬性只會初始化一次

2.不需要有物件,可以直接通過類名呼叫

注:靜態屬性在類被載入的時候,進行初始化

靜態屬性或靜態方法,都可以通過類名呼叫,也可以通過物件名呼叫,建議直接通過類名呼叫

在靜態方法或者靜態**塊中不可以使用非靜態屬性,或非靜態方法

1.修飾符不同

靜態屬性使用static修飾

非靜態不使用static修飾

2.所屬不同

靜態屬性屬於類

非靜態屬於物件

3.儲存記憶體空間不一樣

靜態屬性儲存在方法區中的靜態區域

非靜態屬性和物件一起儲存在堆記憶體

4.初始化時間不一樣

靜態屬性在類被載入的時候初始化一次

非靜態屬性每建立乙個物件就會進行初始化(預設,顯示,構造方法)

5.訪問方式不同

靜態屬性可以通過類名和物件名訪問

非靜態屬性只能通過物件名訪問

使用大括號包裹的一段**就是**塊

種類:區域性**塊 構造**塊 靜態**塊 同步**塊

1.區域性**塊

位置:寫在方法中

作用:主要用於限定變數的生命週期

2.構造**塊

位置:類中,方法之外

作用:為屬性賦值

注 :和屬性的顯示初始化時間一樣,誰在前就先執行誰

3.靜態**塊

位置:類中,方法之外

作用:給類中的靜態屬性初始化,用於只需要執行一次的**

注 :靜態**塊和靜態屬性一樣,都是在類被載入的時候執行,而且只執行一次

靜態**塊中不可以使用非靜態成員

和靜態屬性初始化執行時間相同,誰在前就先執行誰

物件導向之封裝

封裝之如何隱藏屬性 在變數名和方法名之前加雙下劃線 外部就訪問不到 classa x 1def init self,name self.name name def bar self print self.name a.x 外部無法訪問這其實是在類定義的時候,將變數名和函式名進行了變形,我們可以列印類...

物件導向之 封裝

封裝 就是把屬性或者方法裝起來 廣義 把屬性和方法裝起來,外面不能直接呼叫了,要通過類的名字來呼叫 狹義 把屬性和方法藏起來,外面不能呼叫,只能在內部偷偷呼叫 class user def init self,name,passwd self.usr name self.pwd passwd 私有的...

物件導向之封裝

toc 一 封裝 1 什麼是封裝?封裝是類的三大特性,封裝就是把功能和資料整合在一起?2 為什麼要有封裝?以為封裝能讓 整合度更高 3 如何使用封裝?直接定義使用即可 在封裝的基礎上,我們可以將裝到物件或者類中的屬性隱藏起來 1 在定義類或者初始化物件時,在屬性前加 就會將該屬性隱藏起來,但是該隱藏...