1. 程式人生 > >Java面向對象和特征

Java面向對象和特征

實際類型 一致性 設計 div 修飾 protected ext aid 閱讀

面向對象:

概念:

面向對象是一種程序設計思想,計算機程序的設計實質上就是將現實中的一些事物的特征抽離出來描述成一些計算機事件的過程,這種抽象的過程中,我們把具體的事物封裝成一個一個的整體進行描述,使被描述的對象具備一些系統性、整體性的的行為和特征,我們把這種設計思想稱為面向對象。從現實世界中客觀存在的事物出發, 來構造軟件系統, 並在系統的構造中盡可能的運用人類的自然思維方式, 面向對象是目前人與計算機溝通最簡單的語言思想。

面向對象的三種特征:

封裝1.隱藏對象的屬性和實現細節,僅對外提供公共訪問方式

封裝的原則:

1.將不需要對外提供的內容都隱藏起來

2.把實現細節隱藏,提供可以對其進行訪問公共的方式

封裝的方式

將某一功能、屬性抽離出來,獨立寫成單獨的方法或類

設置訪問權限

1.設置訪問權限可以限定該功能或屬性可以被特定的訪問者訪問,保證了程序的安全性和功能的穩定性。

2.Java對類和類中成員都定義了特定的訪問修飾符

類:public(公共的) 、default(默認的,不寫就默認是它)

類中成員:public、protected、default(默認的)、private

/*

類的訪問修飾符可以不寫(默認的),也可以寫public(公共的),一個java文件中只能有一個被public修飾的類,且被public修飾的類類名必須要跟文件名一致(包括大小寫一致),否則編譯會出錯,為了方便閱讀,類名的命名規範是單詞的首字母大寫,多個單詞組成的類名每個單詞的首字母都大寫

*/

繼承繼承是從已有的類中派生出新的類,新的類能吸收已有類的數據

屬性和行為,並能擴展新的功能,或者說將事物的共性的功能和屬性抽

取出來定義成一個父類,讓後來具有更多樣化實現的子類繼承父類。

繼承的作用

1.父類具備的方法子類可以直接繼承過來,不用重新書寫,提高了代碼的復用性

2.讓類與類之間產生關系,有了關系才有多態的實現

3.Java中只支持單繼承,不支持多繼承,因為多繼承存在安全隱患(當多個父類存在同個功能時,子類不確定要運行哪一個),Java支持多層繼承,即父類還可以繼承其他類,java用另一種機制解決單繼承的局限性,即多實現

繼承的特征

1.繼承關系是傳遞的。若類C繼承類B,類B繼承類A(多層繼承),則類C既有從類B那裏繼承下來的屬性與方法,也有從類A那裏繼承下來的屬性與方法,還可以有自己新定義的屬性和方法。繼承來的屬性和方法盡管是隱式的,但仍是類C的屬性和方法。繼承是在一些比較一般的類的基礎上構造、建立和擴充新類的最有效的手段。

2.繼承簡化了人們對事物的認識和描述,能清晰體現相關類間的層次結構關系。

3.繼承提供了軟件復用功能。若類B繼承類A,那麽建立類B時只需要再描述與基類(類A)不同的少量特征(數據成員和成員方法)即可。這種做法能減小代碼和數據的冗余度,大大增加程序的重用性。

4.繼承通過增強一致性來減少模塊間的接口和界面,大大增加了程序的易維護性。

5.提供多重繼承機制。從理論上說,一個類可以是多個一般類的特殊類,它可以從多個一般類中繼承屬性與方法,這便是多重繼承。Java出於安全性和可靠性的考慮,僅支持單重繼承,而通過使用接口機制來實現多重繼承。

//建一個A類
class A{
//成員變量 其中num是實參
int num=0;
//成員方法,其中 i 是型參
public A(int i){
//輸入int型文件輸出下面
System.out.println("aaaaaaaaaaaaaaaaaaa");
System.out.println("i= "+i);
//把輸入的i賦值給成員變量num
num=i;
}
}
//B繼承A
class B extends A{
int num=0;
//成員方法B.
public B(){
//繼承類A的方法.因為B繼承了A必然繼承了A的特性.所以輸入int值10令方法實現.
super(10);
System.out.println("bbbbbbbbbbbbbbbbbbbb");
//這裏的num是類B的.
System.out.println("num= "+num);
//如果想顯示類A的num則需要用下列的super.num.這裏註意num在類A中需是成員變量才可以.
System.out.println("super.num= "+super.num);
}
}
//建立測試類C
public class C{
//main
public static void main(String aa[]){
//new 一個對象B()
new B();
}
}

多態

    定義:指允許不同類的對象對同一消息做出響應。即同一消息可以根據發送對象的不同而采用多種不同的行為方式。實現多態的技術稱為:動態綁定(dynamic binding),是指在執行期間判斷所引用對象的實際類型,根據其實際的類型調用其相應的方法。
    兩種不同的表現形式重載和重新

重載和重寫

重載:重載是讓類以統一的方式處理不同類型數據的一種手段。多個同名函數同時存在,具有不同的參數類型。方法重載就是在類中可以創建多個方法,它們具有相同的名字,但具有不同的參數和不同的定義,調用方法時通過傳遞給它們的不同參數個數和參數類型來決定具體使用哪個方法。方法名要一樣,但是參數類型和個數可以不同。

重載的規則:

1、必須具有不同的參數列表;

2、可以有不責罵的返回類型,只要參數列表不同就可以了;

3、可以有不同的訪問修飾符;

4、可以拋出不同的異常;

重寫:若子類中的方法與父類中的某一方法具有相同的方法名、返回類型和參數表,則新方法將覆蓋原有的方法。子類函數的訪問修飾權限不能少於父類的。在JAVA語言中,java.lang.Object類是所有類最根本的基類(或者叫父類、超類),如果我們新定義的一個類沒有明確地指定繼承自哪個基類,那麽JAVA就會默認為它是繼承自Object類的。

重寫方法的規則:

1、參數列表必須完全與被重寫的方法相同,否則不能稱其為重寫而是重載。

2、返回的類型必須一直與被重寫的方法的返回類型相同,否則不能稱其為重寫而是重載。

3、訪問修飾符的限制一定要大於被重寫方法的訪問修飾符(public>protected>default>private)

4、重寫方法一定不能拋出新的檢查異常或者比被重寫方法申明更加寬泛的檢查型異常。例如:

父類的一個方法申明了一個檢查異常IOException,在重寫這個方法是就不能拋出Exception,只能拋出IOException的子類異常,可以拋出非檢查異常。

重寫與重載的區別在於:

重寫多態性起作用,對調用被重載過的方法可以大大減少代碼的輸入量,同一個方法名只要往裏面傳遞不同的參數就可以擁有不同的功能或返回值。

用好重寫和重載可以設計一個結構清晰而簡潔的類,可以說重寫和重載在編寫代碼過程中的作用非同一般.

Java面向對象和特征