物件導向的基本特徵
1.封裝性
封裝性就是把物件的屬性和服務結合成一個獨立的相同單位,並儘可能隱藏物件的內部細節,包含兩個意義:
◇ 把物件的全部屬性和全部服務結合在一起,形成一個不可分割的獨立單位(即物件)。
◇ 訊息隱蔽,即盡可能隱藏物件的內部細節,對外形成一個邊界〔或者說形成一道屏障〕,只保留有限的對外接口使之與外部發生聯繫。
封裝的原則在軟體上的反映是:要求使物件以外的部分不能隨意存取物件的內部資料(屬性),從而有效的避免了外部錯誤對它的"交叉感染",使軟體錯誤能夠局部化,大幅減少查錯和排錯的困難。
2.繼承性
特殊類別的物件擁有其一般類別的全部屬性與服務,並稱為特殊類別對一般類別的繼承。
一個類別可以是多個一般類別的特殊類,它從多個一般類別中繼承了屬性與服務,稱為多重繼承。
在java語言中,通常我們稱一般類別為父類別(superclass,超類別),特殊類別為子類別(subclass)。
3.多態性
物件的多態性是指在一般類別中定義的屬性或服務被特殊類別繼承之後,可以具有不同的資料類型或表現出不同的行為。這使得同一個屬性或服務在一般類別及其各個特殊類別中具有不同的語義。例如:"幾何圖形"的"繪圖"方法,"橢圓"和"多邊形"都是"幾何圖"的子類,其"繪圖"方法功能不同。 物件導向程式設計方法
OOA-Object Oriented Analysis 物件的分析
OOD-Object Oriented Design OO]
Java語言的物件導向特性
類別是java中的重要的複合資料類型,是組成java程式的基本要素。它封裝了一類物件的狀態和方法,是這一類物件的原形。一個類別的實作包括兩個部分:類別宣告與類別體
1.類別宣告:
[public][abstract|final] class className [extends superclassName] [implements interfaceNameList] {……}
其中,修飾符public,abstract,final 說明了類別的屬性,className為類別名,superclassName為類別的父類別的名字,interfaceNameList為類別所實現的介面清單
2.類別體
類別體定義如下:
class className {[public | protected | private ] [static] [final] [transient] [volatile] type variableName; //成员变量 [public | protected | private ] [static] [final | abstract] [native] [synchronized] returnType methodName([paramList]) [throws exceptionList] {statements} //成员方法 }
3.成員變數
成員變數的宣告方式如下:
[public | protected | private ] [static] [final] [transient] [volatile] type variableName; //成员变量
其中,
static: 静态变量(类变量);相对于实例变量 final: 常量 transient: 暂时性变量,用于对象存档,用于对象的串行化,见对象的串行化一节 volatile: 贡献变量,用于并发线程的共享
4.成員方法
方法的實作包括兩部分內容:方法宣告與方法體。
[public | protected | private ] [static] [final | abstract] [native] [synchronized] returnType methodName([paramList]) [throws exceptionList] //方法声明 {statements} //方法体
方法宣告中的限定詞的意義:
static: 类方法,可通过类名直接调用 abstract: 抽象方法,没有方法体 final: 方法不能被重写 native: 集成其它语言的代码 synchronized: 控制多个并发线程的访问
◇ 方法宣告
方法宣告包含方法名稱、傳回型別和外部參數。其中參數的型別可以是簡單資料型別,也可以是複合資料型別(又稱引用資料型別)。
對於簡單資料型別來說,java實作的是值傳遞,方法接收參數的值,但不能改變這些參數的值。如果要改變參數的值,則用引用資料型,因為引用資料型別傳遞給方法的是資料在記憶體中的位址,方法中資料的操作可以改變資料的值(上海尚學堂java訓練原創,請多關注,後續JAVA相關技術文章陸續奉上)。
以上是Java語言中的物件導向特性的詳細內容。更多資訊請關注PHP中文網其他相關文章!