1. 程式人生 > >JAVA類的全面總結

JAVA類的全面總結

java是面向物件:

下面解釋什麼面向物件

JAVA操作都是類中操作如上圖Cat類,例項化可以在main函式中

那麼java本身就是類操作,為什麼還要學習繼承多型介面包?

官方回答:可讀性強,安全性高,程式碼簡化,維護性高,方便查詢錯誤等

下面我要從現實生活的角度去說,(僅個人觀點):

從現實世界中來,必然也要歸回現實生活,這是自然法則,那麼編成也不例外,我們生活中分類例子比比皆是,例如:動物類-----》 無脊椎和脊椎-----》中又可以分為----》爬行類,兩棲類。。。。。。。。為了更好的用程式語言刻畫自然界,顯然一個類是可以得,但是沒有遵循人類的天生分類記憶策略,因此有了繼承(子父類),父類表示animal類,cat類表示子類,cat類繼承了animal類的屬性和方法,那麼在繼承的同時,cat類會進化 學習,

上面貓類繼承了動物類,但是它不僅有animal類的屬性和行為,自己還會有其他fly,在cat類中,它的吃的東西可能比animal多,如果cat類操作本類中的eat方法,則用this關鍵字,如用animal類中,用super關鍵字

 

this和super關鍵字的用法解釋:

this只用於類內,而super用於子父類間或abstract類中;

this指向自己的引用;super實現對父類成員的訪問,用來引用當前物件的父類

 

在上圖animal類中的name,和age都是private,那麼要對name,age操作就需要同過 get,set操作,把get/set這個方法稱為封裝;

JAVA封裝:包裝隱藏方法,防止該類的程式碼和資料被外部修改

 

cat中的eat()方法與anmial中的eat()方法同名,那麼 這裡就會出現了類中的方法重寫(override);

通常重寫(override)與過載(overload)都是面試筆試的重點,下面分別說明他們的規則:

重寫規則:

  1. 引數列表相同,返回值相同
  2. 訪問許可權不能比父類中被重寫的方法的訪問許可權更低(訪問限定符:低-------->高   :public -->default---->protected------>private),且必須在同一 包中
  3. 父類成員方法只能被它的子類重寫
  4. 宣告為final的方法不能被重寫
  5. 宣告為static的方法不能被重寫,但是能被再次宣告
  6. 構造方法不能被重寫
  7. 當需要在子類中呼叫父類的被重寫方法時,要使用super關鍵字

過載規則:

  1. 過載是一類中,方法名相同,而引數不同,返回型別可以相同也可以不同
  2. 每個過載的方法都必須有一個獨一無二的引數型別列表
  3. 最重用的是構造器過載
  4. 被過載的方法可以改變:1.引數列表;2.返回型別,3.訪問修飾符;4.宣告新的或更廣的檢查異常
  5. 返回值不能作為過載函式的區分標準

方法的重寫和過載是Java多型性的不同表現,重寫是父類與子類之間多型性的一種表現,過載可以理解為 多型的具體表現形式

那麼為什麼要有過載和重寫方法,同多型一起解釋原因:

多型:

在多型中必包含重寫,繼承,父類引用指向子類物件

下面程式碼一目瞭然多型的使用:

animal a=new cat();  //向上轉型

a.eat();//呼叫cat的eat

cat b=(cat) a// 向下轉型

b.fly();//呼叫的是cat的fly

對於向上轉型:a引用是animal,因此在編譯時,會在animal中 找eat方法如果有編譯通過,如果沒有會報編譯錯誤,通過之後jvm會呼叫cat中的eat方法