——我是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檔案載入到記憶體。(類載入器)1、 匿名物件,就是沒有名字的物件。b:在棧內開闢乙個變數空間。給lgm使用。
c:new student()就會在堆記憶體開闢空間。
d:方法進方法區,有類名做標記。並且,同時成員變數進堆記憶體並給出了預設初始化值。
e:對成員變數進行顯示初始化
f:如果有構造**塊,可以在構造**塊中對成員變數賦值。
g:執行構造方法中對成員變數的賦值。
h:到此為止,物件初始化完畢。
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 物件導向程式設...