面向對象的分析與設計(OOA&D)方法是一種非常成熟的技術。也是當前商業公司經常使用的一種技術,因為JAVA語言本身就是一種面向對象的語言,所以掌握面向對象這種技術對于JAVA語言的應用具有重要意義。
繼承(inheritance)
繼承是使用已存在的類的定義作為基礎建立新類的技術,新類的定義可以增加新的數據或新的功能,也可以用父類的功能,但不能選擇性地繼承父類。這種技術使得復用以前的代碼非常容易,能夠大大縮短開發周期,降低開發費用。比如可以先定義一個類叫車,車有以下屬性:車體大小,顏色,方向盤,論壇,而又由車這個類派生出教程和卡車兩個類,為轎車添加一個小后備箱,而為卡車添加一個大貨箱。
封裝(encapsulation)
類使得數據和對數據的操作集成在一起,從而對使用該類的其他人來說,可以不管它的實現方法,而只管用它的功能,從而實現所謂的信息隱藏。
多態(polymorphism)
多態又分為設計時多態和運行時多態,例如重載又被稱為設計時多態,而對于覆蓋或繼承的方法,JAVA運行時系統根據調用該方法的實例的類型來決定選擇調用哪個方法則被稱為運行時多態??偠灾?,面向對象的設計的典型特點就是繼承,封裝和多態,這些特點也是面向對象之所以能如此盛行的關鍵所在。
單繼承與多繼承
JAVA不支持多重繼承,單繼承使JAVA的繼承關系很簡單,一個類只能有一個父類,易于管理程序,同時一個類可以實現多個接口,從而克服單繼承的缺點。
接口的定義和類的定義很相似,只是關鍵字不同,關鍵字為interface。生命格式如下:
interface 接口名
{
}
上面的大括號中為接口體。接口體中包含成員變量定義和方法定義兩部分。
接口體中只進行方法的聲明,不允許提供方法的實現。所以在格式上只存在方法聲明,實際上沒有方法體,而方法體要在實現的類中再去具體定義。
還有一點需要說明的是:如果一個類使用了某個接口,就必須要實現這個接口的所有方法,即使實在沒有內容只是一個空的方法體也不許要寫。而且每個方法都默認是public的,所以實現時代碼一定要用public做修飾,參數個數,類型以及返回值的類型都必須與接口中的聲明相一致。
例如:
interface Runable
{
}
當某個類要實現這個接口時,就用 imlements 來聲明。
例如,我們相做一個多線程的例子,那么就可有兩種實現方式,一種是通過定義一個Thread類的子類來實現,另一種是通過實現Runable接口來實現。代碼如下(這里的PrintHello類就是通過實現Runable接口來實現的,而不是擴展Thread稱為他的子類):
import java.lang.*;
class TestThread
{
public static void main(String args[])
{
try{
printHello ph = new PrintHello();
Thread Tph = new Thread(ph);
for(;;){
System.out.println("I'm main");
Thread.sleep(100);
}
}
catch(Exception e){
e.printStackTrace();
}
}
}
class PrintHello implements Runnable
{
public void run(){
try{
for(;;){
System.out.println("I'm hello");
}
}
catch(Exception e){
e.printStackTrace();
}
}
}