JavaSE基礎語法--傻瓜筆記--1017(第三章:物件導向1)

2020-10-21 22:00:44

第三章:物件導向

物件導向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型別。

方法的過載

什麼樣的情況構成方法過載:在一個類中有多個方法名相同,且引數不同的方法。

引數不同:型別不同,個數不同,順序不同

過載的作用:可以處理功能相同,但是引數型別不同的一類問題。

:成員方法和構造方法都可以過載。

若有錯誤,歡迎私信指正。