物件導向 01

2021-07-04 09:38:39 字數 3920 閱讀 5848

——我是lgm_hakka,請多多指教。

1、面向過程

以函式為基礎,強調的是過程。(強調這個方法有什麼功能)。

如:c語言。 

2、物件導向

物件導向是基於面向過程的,以物件為基礎,強調的是結果。(強調物件呼叫方法能完成怎麼樣的功能)

1、物件導向的特點:

a)  一種更符合人們思考習慣的思想(能懶就懶)

b)  能把複雜的問題簡單化

c)  讓程式設計師從執行者轉變為指揮者。

2、怎麼讓自己寫的**更加符合物件導向的思想呢?

分析步驟

a:先分析該需求中有什麼物件(名詞提取法)

b:明確每個物件可以做什麼(動詞提取法)

c:明確每個物件之間的關係

分析完有哪些物件之後,把每個物件都單獨寫了乙個類。

每個物件可以做什麼就在這個類中定義乙個方法.

闡述三個好處。

舉例:其實面試官您就是按照物件導向的思想在思考問題。

面試官您本身就可以開發專案,但是專案有可能比較大,乙個人開發周期長。為了提高效率,需要有更多的具備者專業開發能力的人來幫助您做事情。這個人就是您所需的物件,只要呼叫這些物件的開發功能就可以完成專案。只要指揮他們做事情就可以了。

類是屬性和行為的集合,是乙個抽象的概念。【以下均用student類舉例】

class student 

}

物件是類的具體實現。

例如:有個學生類student:

student lgm = new student();// lgm就是學生類的乙個物件

在開發過程中,就是建立很多的類,然後不斷的new物件,指揮物件去做某些事情。【物件.方法()】

lgm.study();// 通過物件呼叫方法

物件的初始化過程

a:把student.class檔案載入到記憶體。(類載入器)

b:在棧內開闢乙個變數空間。給lgm使用。

c:new student()就會在堆記憶體開闢空間。

d:方法進方法區,有類名做標記。並且,同時成員變數進堆記憶體並給出了預設初始化值。

e:對成員變數進行顯示初始化

f:如果有構造**塊,可以在構造**塊中對成員變數賦值。

g:執行構造方法中對成員變數的賦值。

h:到此為止,物件初始化完畢。

1、     匿名物件,就是沒有名字的物件。

new student().study();// 匿名物件,呼叫方法
2、匿名物件的應用場景:

a、當物件已經明確只使用一次時,可以將建立匿名物件

【例如:一次性筷子】

b、匿名物件可以作為實際引數進行傳遞

1、要使用類中的內容,首先得有物件。

建立物件的格式:類名 物件名 = new 類名(有/無引數);

2、使用類中的內容,通過該類的物件

物件呼叫成員變數、成員方法的格式:          

物件名.成員變數名

物件名.成員方法名(有/無引數);

注意:現在可以在乙個檔案中寫多個類.但是檔名要與帶有主方法的那個類名一致。

1、成員變數

btye,short,int,long型別的陣列,預設初始值是0;

char型別的陣列,預設初始值是'\u';

string型別的陣列,預設初始值是null;

boolan 型別的陣列,預設初始值是false。

2、區域性變數

3、使用變數的原則:就近原則

首先在區域性範圍找,有就直接使用。

接著在成員方法找,有就使用。

最後到父類中成員變數中找,有就使用。(不會到父類的方法中找!)

如果都沒有,就報錯。

4、那麼什麼時候需要將變數定義為成員變數呢?

成員變數是該類的屬性。只有能夠用於描述該類的屬性的變數,才可以定義為該類的成員變數。否則應該定義為區域性變數。

1、構造方法的格式:

2、作用:給物件初始化;給成員變數賦值

3、給成員變數賦值

4、注意事項

class student 

//帶參構造

public student(string name)

}

1、封裝是指隱藏物件的屬性和實現細節,僅僅對外提供公共訪問的方式

2、用private關鍵字封裝僅僅是封裝的一種表現形式。因為類與方法等其實也是一種封裝的體現。

3、封裝的**體現:

a、類的成員變數均用private關鍵字修飾。

b、若使用預設許可權,其許可權大小:public許可權 < 預設許可權 < private許可權

c、要想對資料進行校驗,就需要將其封裝在方法中。一般不會再主方法進行資料校驗。

4、封裝的好處:

5、注意事項

class student 

// 帶參構造

public student(string name, int age)

// 對外提供set方法,用於設定姓名、年齡

public void setname(string name)

public void setage(string age)

// 對外提供get方法,用於獲取姓名、年齡

public string getname()

public int getage()

// 定義方法:學習

public void study()

}

概述

將a類定義在b類中,此時,a類就稱為內部類(巢狀類、內建類) 

內部類的特點:

內部類可以直接訪問其外部類的成員,包括私有成員

外部類若要訪問內部類的成員,必須建立內部類物件

內部類的分類

定義在成員位置上的類,叫做成員內部類

定義在方法中的類,叫做區域性內部類

如果想在測試類中,直接使用成員內部類,只需:

外部類名.內部類名 變數名 = 外部類物件.內部類物件

即:外部類名.內部類名 變數名 =new外部類名().new內部類物件()

成員內部類的修飾符(private和static)

成員內部類的修飾符

a:private修飾是為了考慮安全性

b:static修飾是為了方便呼叫

如果成員內部類用static修飾那麼呼叫的方式是

外部類名.內部類名 變數名 =new外部類名.內部類名();

區域性內部類的使用

注意:區域性內部類如果訪問方法中的區域性變數,那麼這個變數必須用final修飾

目的:為了延長它的生命週期

定義沒有名字的區域性內部類

前提條件

有個類,或者抽象類,或者介面(一般情況下,是抽象類和介面較為常見)

格式new類名或介面名() ;

解釋:通過匿名物件其實就是獲取到了乙個該介面的子實現類物件。

以後遇到匿名內部類的形式是,乙個方法的形參位置要求傳遞乙個介面型別的物件.

有乙個介面叫 inter

public

voidshow(inter i)

什麼時候使用匿名內部類

所有父類出現的地方完全可以使用子類去替代。

class outer 

} // 成員方法

public void method()

}class innertest

}

物件導向01

1.物件導向和面向過程 面向過程 以我為中心,按照事物的發展流程 小型指令碼程式合適用面向過程 萬事萬物皆為物件 object 大型專案合適物件導向 2.如何編寫物件導向的程式 先建立類.對某些事物進行總結.相當於圖紙 使用類建立物件 class 類名 object def init self,na...

物件導向01

物件導向思想 對於描述複雜的事物,為了從巨集觀上把握,從整體上合理分析,我們需要使用物件導向的思路來分析整個系統。但是,具體到微觀操作,仍然需要面向過程的思路去處理。從認識論角度考慮是先有物件後有類。物件是具體的事物。類是抽象的,是對物件的抽象 從 程式設計角度考慮是先有類後有物件。類是物件的模板 ...

物件導向程式設計01 面向過程 物件導向

前面12講我已經寫完了從零開始學j ase 慶祝完結撒花!那麼從今天開始正式步入物件導向程式設計。建議開啟本章之前先回顧 j ase010方法詳解和 j a變數與方法的呼叫 同類操作中與跨類操作中的對比 物件導向程式設計 oop object oriented programming 物件導向程式設...