java面向對象的基礎掃描

"Anything is Object"----萬物皆對象!!!

所以程序員一定不能說自己是“單身狗”,“聖鬥士”and so on.如果程序員說類似的話,只能說明:面向對象的理解還不到位啊。廢話到此爲止,現在我們來談一下老生常談的”面向對象“:

我們都知道面向對象的四大特徵(別吐槽,三大特徵也不錯):抽象、封裝、繼承、多態;

面向對象的基礎就是類(class),類是對象的模板(理解:動物是一個類,而獅子就是一個對象);

類由屬性和行爲組成;

1.抽象:把具體的事物抽象成一個類的過程(找出共有的屬性和行爲的過程);

2.封裝:把相同屬性和行爲組合成一個類的過程;

舉個例子:我們把美國,俄羅斯,德國,中國都看做是國家的過程------------抽象;

凡是國家都有國旗,語言,首都,都會打仗。

   public class Country{
	//屬性
	private String flag;
	private String captical;
	private String language;
	
	//行爲
	public void fight(){
		System.out.println("保家衛國");
	}
}
我們將我們理解的屬性和行爲寫成上述代碼的過程--------封裝;

其他諸如構造函數,new 對象的講解請自行Google,或者問度娘,這裏不再闡述。

--------------------------------------------------------------------------------------------------------------------

成員:類的屬性和行爲統稱爲類的成員;

類的屬性-----成員變量;

類的行爲-----成員函數;

這裏來討論一下我們在編程過程中容易混淆的地方:

1.訪問權限限定符:

java中一共有四種訪問權限限定符:public 、private、protected、默認(即我們沒有寫前三者的情況):

範圍 public protected private 默認
同類 可見 可見 可見 可見
子類同包 可見 可見   可見
子類非同包 可見 可見    
非同包 可見      
通過上圖的總結:我們可以發現以下規律:

public------完全沒有限制;

默認--------相同包下面可以訪問;

protected--繼承關係下可以訪問;(protected關鍵字用於在繼承時控制可見性)

private-----只有本類中可以訪問;

這裏給出一些建議:

1.不希望外面能夠訪問的,我們用private;

2.希望在繼承關係下可以訪問的,我們用protected;

3.任意可以訪問的,我們用public;

4.跨包不能訪問的,我們不聲明權限,即用默認的;

千萬要注意:不寫權限修飾符和public是有差別的;

2.關鍵字final和關鍵字static

(1)static關鍵字

static關鍵字是表示靜態的;

static聲明的成員是屬於整個類的,而不屬於某個對象;

static修飾的成員和類的生命週期相同(共存亡);

所以static修飾的成員加載優先於普通成員;

用法:

1.當需要記錄類的狀態時,可以使用靜態變量;

2.當類所實現的功能和具體的對象無關時,可以使用static方法;

3.static修飾的方法只能訪問static修飾的成員;(從加載順序上面考慮問題)

4.static成員的兩種訪問方式:

a.類名.static成員;(這裏要注意,不是所有static修飾的成員都可以直接用這種方式訪問,它也受訪問權限的制約)

b.對象.static成員;(不建議使用)


(2)final關鍵字 

final的英文意思是:最終的,不可變的;final可以用來修飾類,方法,變量;

final修飾的類-----------該類不可以被繼承;

final修飾的變量--------變量值不可以被修改;

final修飾的方法--------該方法不能被重寫(覆蓋);

總結:static不可以用來修飾類class,而final可以來修飾類;

類的修飾符只有三種:public,final,abstract,當然也可以不寫

3.this關鍵字和super關鍵字

this關鍵字表示本類的;

super關鍵字表示父類的;

需要注意的一點是:他們需要寫在第一行;(詳情自行搜索,可以留言)

5.重載(overload)和重寫(override)

(1)重載的來源是構造函數,因爲構造函數的名字必須和類名相同,所以引出了重載的概念;

對於重載,我們只需要知道以下幾點即可:

1.重載跟函數的返回值無關;

2.重載的參數不同(類型不同,個數不同,順序不同)

3.函數名必須相同;

4.也可以用在繼承關係中;

(2)重寫

重寫主要用在繼承裏面,實現多態功能的;

重寫的條件:

返回值,方法名,參數都必須相同;

兩者的對比:

重載只要方法名相同,其他都不同;

重寫要求返回值,方法名,參數都必須相同;

6.成員變量和局部變量 

成員變量:定義在類中,方法和塊之外的,屬於整個類,

局部變量:定義在方法中和塊中;

兩者最大的差別就是,成員變量可以不進行初始化,JVM會自動爲其提供默認值;而局部變量不可以;

7.繼承:java是全繼承,除了構造函數之外;

父類的私有成員也可以繼承但不可訪問;

爲了鞏固上述內容,下一篇文章來加強學習。

若文中有不妥或者錯誤之處,抑或需要交流幫助的,都可以留言,不吝賜教!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章