7.Java面向對象的三大特徵1

7.Java面向對象的三大特徵1

標籤(空格分隔): 6Java基礎


面向對象的三大基本特徵
封裝
繼承
多態

一、封裝

A、含義:將類的某些信息隱藏在類內部,不允許外部程序直接訪問,而是通過該類提供的方法來實現對隱藏信息的操作和訪問 
B、封裝的好處
		1、只能通過規定方法訪問數據
		2、隱藏類的實現細節
		3、方便加入控制語句
		4、方便修改實現
C、設計原則:
	 把不想讓外界知道的實現細節給隱藏起來,提供公共的訪問方式
D、private是封裝的一種體現。
		 封裝:類,方法,private修飾成員變量
     		(1)私有的意義,可以修飾成員變量和成員方法
		(2)特點:被private修飾的後的成員只能在本類中被訪問	
		(3)常見應用:把成員變量用private修飾、提供對應的getXxx()/setXxx()方法
 E、封裝的步驟
 	    1、私有的屬性
   			 就是將成員變量加上訪問修飾符private(私有的)

		2、公開的讀寫方法
   			 加入讀(get())和寫(set())的方法
		 3、加入控制流程

#二、構造方法

A、特點
	1、每當創建給定類的實例時就調用的方法
	2、與類同名,但沒有返回類型
	3、Java 爲對象分配內存,初始化實例變量並調用構造方法
B、兩種構造方法
	1、 參數化構造方法(有參的構造方法)
			訪問修飾符 構造方法名(類名)(參數1....){
			//初始代碼
			}

	2、 隱式構造方法(無參的構造方法)
		訪問修飾符 構造方法名(){
			//初始代碼
		}
		說明:	1、構造方法名必須和類名一致
			2、無參的構造方法是系統默認的:系統提供的;自己無需寫出
			3、我們在一般的實例化中調用的就是無參的構造方法
	3、說明:
		a、只有隱式構造方法時,可以不用定義,系統自動創建
			b、如果以定義代參的構造方法時,系統就不會再創建隱式的構造方法,但我們	可以定義無參的構造方法,
				c、無參和有參的構造方法也可以看做是構造方法的重載
					方法的重載:方法名相同,但參數項不同,與返回值類型無關
	4、成員變量的賦值方法
		a、調用靜態的方法==》後面講
		b、代參的構造方法
	5、方法重載是指在一個類中定義多個同名的方法,但要求每個方法具有不同的參數		的類型或參數的個數。調用重載方法時,Java編譯器	 						能通過檢查調用的方法的參數類型和個數選擇一個恰當的方法。
		方法重載通常用於創建完成一組任務相似但參數的類型或參數的個數		不同的方法
		注意,Java的方法重載要求同名的方法必須有不同的參數表,僅有返回類型不同是不足以區分兩個重載的方法
		6、方法重載具體規範編輯
		=>方法名一定要相同。
		=>方法的參數表必須不同,包括參數的類型或個數,以此區分不同的方法體。
			1.如果參數個數不同,就不管它的參數類型了!
			2.如果參數個數相同,那麼參數的類型或者參數的順序必須不同。
		=>方法的返回類型、修飾符可以相同,也可不同。
		=>在同一個類中

#三、static

(1)靜態的意思。可以修飾成員變量和成員方法,代碼塊。
        綁定是類
        
(2)靜態的特點:
    A:隨着類的加載而加載
    B:優先與對象存在
    C:被static修飾的成員 被類的所有對象共享
	    這其實也是我們判斷該不該使用靜態的依據。
    D:可以通過類名調用
	    既可以通過對象名調用,也可以通過類名調用,建議通過類名調用。 
	    
(3):靜態關鍵字可以修飾地方
	A、屬性
		訪問修飾 static 數據類型 成員名;
		說明:被static修飾的屬性,屬於類成員,一次賦值可以被多個對象調用
			   可以使用對象和類名可以調用
			   
	B、方法
		訪問修飾符 static 返回值類型 方法名(參數列表){}
		說明:屬於類方法
			  可以使用對象名/類名調用
			  靜態的方法只能調用靜態的屬性和方法
			   
				
(4)靜態的注意事項;
	非靜態的方法:可以調用靜態的屬性和方法
	靜態的方法:只能調用靜態的屬性和靜態的方法
(5)靜態變量和成員變量的區別
	A:所屬不同
		靜態變量:屬於類,類變量
		成員變量:屬於對象,對象變量,實例變量
	C:生命週期不同
		靜態變量:靜態變量是隨着類的加載而加載,隨着類的消失而消失
		成員變量:成員變量是隨着對象的創建而存在,隨着對象的消失而消失
	D:調用不同
		靜態變量:可以通過對象名調用,也可以通過類名調用
		成員變量:只能通過對象名調用

#四、代碼塊

(1)含義:在Java中用{}擴起來的代碼叫代碼塊;
(2)根據位置不同分爲:
    a、局部方法塊:局部位置,用於限定變量的生命週期。位置在方法裏;
    b、構造方法塊:在類中的成員位置,用{}括起來的代碼。
		說明:每次調用構造方法執行前,都會先執行構造代碼塊。
		作用:可以把多個構造方法中的共同代碼放到一起,對對象進行初始化。
    c、靜態方法快:在類中的成員位置,用{}括起來的代碼,只不過它用static修飾了。
		說明:每次在使用類的時候都會執行
		作用:一般是對類進行初始化。

(3)靜態代碼塊,構造代碼塊,構造方法
	 靜態代碼塊 -- 構造代碼塊 -- 構造方法
	 靜態代碼塊:只執行一次
	 構造代碼塊:每次調用構造方法都執行

#五、this關鍵字

(1)代表當前類的引用對象
	記住:哪個對象調用方法,該方法內部的this就代表那個對象
(2)this的應用場景:
	A:解決了局部變量隱藏成員變量的問題
	B:this:可以調用屬性 		語法:this.屬性
	  this:可以調用方法 		語法:this.方法名
	  this:可以調用構造方法	語法:this():無參構造方法;this(參數列表):有參
		說明:this調用構造方法必須出現在方法的第一句
		      只是在本類中使用

六、繼承

A、說明
	多個類中存在相同屬性和行爲時,將這些內容抽取到單獨一個類()中
	那麼多個類無需再定義這些屬性和行爲,只要繼承那個類即可。
	存放公共代碼的類就是父類 
	被提取的類就是子類
B:繼承的特點
   子類只允許有一個父類(基類/超類)
   父類可以多個子類
   子類是對父類的擴展;子類繼承了父類的屬性和方法
   具有層次的結構
  

C:繼承的優點與弊端:
  1、優點
		繼承是面向對象中代碼重用的最佳方法,採用繼承的機制來組織設計系統中的類,可以提高程序的抽象的程度,使之更接近人類的思維方式,採用繼承編寫的程序機構清晰,節約了編程的時間,因爲代碼的編寫減少,因此也降低了維護的工作量
		代碼的可重用性
		父類的屬性和方法可用於子類
		設計應用程序變得更加簡單
		可以輕鬆地自定義子類
  2、弊端
		a:讓類的耦合性增強。這樣某個類的改變,就會影響其他和該類相關的類。
			設計程序的原則:低耦合,高內聚。
			耦合:類與類的關係
			內聚:自己完成某件事情的能力
		b:打破了封裝性

D:父類(基類,和超類)
   子類(派生類)
   說明:父類是所有子類的公共屬性及方法的集合,子類則是父類的特殊化
   實質:子類是對父類功能的擴展

E:繼承的語法
   修飾符 class  子類   extends 父類{}
   說明:繼承關鍵字:extends
		 父類初始化信息加載,父類的所有信息都可以通過子類去完成;
         特別注意只要使用關鍵字,就意味着默認調用父類的無參構造方法(super())
F、this關鍵字與super關鍵字
	this:代表的是當前的對象,誰調用就是誰--先去本類中查找如果沒有再去父類中查找
		使用:在本類中使用
				可以調用屬性:this.屬性名
				調用方法:this.方法名()
				調用構造方法:this():無參的構造方法			
							  this(參數):有參的構造方法
							  只能出現在構造方法中,必須在第一行
	super:代表的是父類的對象,始終指向父類--查找範圍直接去父類查找
		使用:在子類中使用
				調用屬性:super.屬性名
				調用方法:super.方法名()
				調用構造方法:super()|super(參數)
					只能出現再子類的構造方法中,而且在第一句,
	注意:同一個構造方法不能同時調用自己的和父類的構造方法

F:Java繼承中的成員關係
	1:成員變量
		a:子類的成員變量名稱和父類中的成員變量名稱不一樣,調用就是子類中成員變量
		b:子類的成員變量名稱和父類中的成員變量名稱一樣時的訪問方法
			子類的方法訪問變量的查找順序:
				在子類方法的局部範圍找,有就使用。
				在子類的成員範圍找,有就使用。
				在父類的成員範圍找,有就使用。
				找不到,就報錯。
	2:構造方法
		a:子類的構造方法
			=>先調用父類構造方法,再調用子類構造方法
				說明:子類的構造方法默認會去訪問父類的無參構造方法是爲了
					  子類訪問父類數據的初始化
					  父類中如果沒有無參構造方法,怎麼辦?
						子類通過super去明確調用帶參構造
						子類通過this調用本身的其他構造,
						但是一定會有一個去訪問了父類的構造
			在繼承關係中創建 對象的時候執行順序是
				先父類的屬性 -》父類的構造方法-》子類的屬性-》子類的構造方法
						
    	b、子類構造方法的名稱與類的名稱相同	
	3:成員方法
		a:子類的成員方法和父類中的成員方法名稱不一樣,
		b:子類的成員方法和父類中的成員方法名稱一樣,?
			通過子類對象訪問一個方法的查找順序:
				在子類中找,有就使用
				在父類中找,有就使用 
				找不到,就報錯
H、要調用父類構造方法,使用關鍵字 super
    1、super使用的語法爲:
		構造方法:super()  或 super(參數列表) ;
		父類的方法:super.方法名()
			說明:super () 方法始終指向調用類的父類
				  super關鍵字來訪問父類的成員
				  super只能出現在子類的方法和構造方法中
				  super調用構造方法時,只能是第一句
				  super不能訪問父類類的private成員
    2、this與super的區別
		操作屬性
			this.屬性:表示調用本類中的屬性,如果本類中的屬性不存在,則從父類查找
			super.屬性:表示調用父類中的屬性
		操作方法
		 	this.方法():表示調用本類中的方法,如果本類中的方法不存在,則從父類查找
			 super.方法():表示調用父類中的方法
		調用構造
			this()調用本類中的其他構造方法
			super():由子類調用父類中的構造方法
			說明:在調用構造方法時,因爲兩個都要在第一行,所以只能出現一個
		查找範圍
			this:先從子類中查找,如果沒有從父類中查找
			super:不查子類直接查找父類
		特殊
			this:當前對象
			super:父類對象
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章