第三章:面向物件
面向物件1
1.面向程序和面向物件的設計思想
面向程序 procedure oriented programming (POP):分析出解決問題所需要的步驟,然后把步驟一步一步實作,因此更注重步驟,
面向物件 object oriented programming (OOP):以分類的的方式進行思考和解決問題,面向物件的思維方式適合于處理復雜問題,面向物件的思想符合人類的認識習慣,因此,更注重宏觀、整體上的設計,
/*大象進冰箱問題
面向程序:打開冰箱門();
裝大象();
關閉冰箱門();
面向程序:設計冰箱類{
開門();
關門();
}
人類{
操作();
}
或
門類{
開門();
關門();
}
設計冰箱類{
門類();
}
人類{
操作();
}
*/
注:面向程序適合處理簡單的事情,直接關注流程,簡單有效,
? 面向物件適合處理復雜的事情,先使用面向物件的方式對整體關系做出分類,然后,根據不同的類深入細節的處理,
? 面向物件無法取代面向程序,它們是相輔相成的,面向物件關注于從宏觀上把握事情之間的關系,在具體到如何實作某個細節時,仍然采用面向程序的思維,
2.Java類
什么是類?
類是一個模板,他描述一類物件(事物)的屬性和行為,
類是表示一個客觀世界某類群體的一些基本特征抽象,
類 = 汽車設計圖;物件 = 實實在在的汽車,
類里面定義事物特征 == 汽車設計圖 == Java.檔案
物件是具體存在 == 具體的是某一輛車(實際存在,可以使用)
類的結構:
成員變數:物件屬性的描述
方法:物件的行為;(可以做的事情)
構造方法:用于創建物件
內部類:即在類體中宣告的類
塊:代碼塊
類的定義:
第一步:發現類;
第二步:發現類的公共屬性;
第三步:發現類的方法
類的宣告:
[訪問權限修飾符 public/default][修飾符 final/abstract] class 類名{
//類的屬性 類的成員 變數 被類包含
//成員變數宣告語法:
//[訪問權限修飾符][修飾符]資料型別 變數名[=值];
//類的行為 類的成員 方法 被類包含
//成員方法宣告語法:
//[訪問權限修飾符][修飾符] 回傳值型別 方法名(形式引數型別 引數名){
//[return 值 ;]
//回傳值型別若是void,則return可有可無,其余的回傳值型別必須加上return,
}
}
3.Java物件
物件:物件是類的一個實體(物件不是找個女朋友或男朋友),是以類為模板,在記憶體中創建一個實實在在存在的實體,
4.物件的創建和使用
Car c = new Car();
new關鍵字 + 默認構造方法();在記憶體中創建一個物件,但不能使用,需要在左側以類為模板宣告一個變數指向記憶體空間中具體的物件,使用變數訪問物件中的屬性、方法,
注:通過類可以創建無數個物件,
5.總結類和物件
①類是一類事物的抽象概念,是一個模型,
②物件是由這個模型所創造的一個一個的具體存在的,是實實在在的實體,
所以創建物件的程序也叫實體化物件, 物件 == 實體
現實生活中先有類后有類,而編程時先設計類后創建物件,
6.變數分類
成員變數:
? ①定義在類中,方法體之外,
? ②資料型別為基本型別和參考型別,
? ③變數可以不賦值,Java自動賦值,
?
? ④在創建物件時會從類體中復制一份到物件中,
參考型別(String):null, 整數型別:0,浮點型別:0.0,布爾型別(boolean):false, 字符型(char):不顯示,實際上為空格,
區域變數:
? ①在方法、構造方法、陳述句塊中定義的變數,
? ②資料型別為基本型別和參考型別,
? ③在使用前必須賦初值,
? ④變數宣告、初始化都在方法中,方法結束后,變數自動銷毀,
? ⑤方法的引數也是區域變數,在呼叫時,會為其賦值,
類變數:(也叫靜態變數)類變數也宣告在類中,方法體之外,但必須宣告為static型別,
7.方法分類
一個類可以包含以下型別方法:
成員方法:成員方法是定義在類中,這種方法在創建物件時創建,
語法格式:
[修飾符]回傳值型別 方法名(引數串列){
方法體陳述句;
[return 回傳值;]
//當回傳值型別為void時,return可有可無
}
構造方法:
①是定義在Java中的一個用來創建物件的方法,
②方法名與類名相同,沒有回傳值,不需要void修飾,
③一個類中可以擁有多個構造方法,(方法多載)
④如果類中沒有顯示的宣告構造方法,類中會默認有一個無參的構造方法,
⑤一旦類中定義了有參的,默認無參的構造方法會被覆寫,建議寫有參的時候把無參的也寫上,
[訪問權限修飾符] 類名(引數串列){
方法體陳述句;
}
類方法:(也叫靜態方法)類方法也宣告在類中,但必須宣告為static型別,
方法的多載:
什么樣的情況構成方法多載:在一個類中有多個方法名相同,且引數不同的方法,
引數不同:型別不同,個數不同,順序不同,
多載的作用:可以處理功能相同,但是引數型別不同的一類問題,
注:成員方法和構造方法都可以多載,
若有錯誤,歡迎私信指正,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/184840.html
標籤:其他
上一篇:為什么企業要建多國語言網站?
下一篇:JAVA正則運算式的學習
