java物件導向 十五 抽象類

2021-06-26 12:14:34 字數 2469 閱讀 9177

乙個類不可能去繼承乙個已經實現好的類,只能繼承抽象類或實現介面.

普通類就是乙個完善的功能類,可以直接產生物件並且可以直接使用,裡面的方法都是帶有方法體 {} 的,而抽象類中最大的特點是包含了抽象方法,抽象方法是只宣告而未實現(沒有方法體),抽象方法定義時要使用abstract關鍵字,並且抽象方法一定要在抽象類中,抽象類要使用abstract關鍵字宣告.

範例1:

abstract class a

public abstract void get() ; //抽象方法:只宣告,沒有方法體

}public class demo

}

執行結果:

抽象類不能直接new,原因在於乙個類的物件例項化之後,可以呼叫類中的屬性和方法,但是抽象類中的抽象方法沒有方法體.

抽象類的使用原則:

1.抽象類必須有子類,使用extends繼承,乙個類只能繼承乙個抽象類;'

2.子類(如果不是抽象類),則必須覆寫抽象類中的全部抽象方法;

3.抽象類物件可以使用物件的向上轉型方法,通過子類來進行例項化操作.

範例2:

abstract class a

public abstract void get() ; //抽象方法:只宣告,沒有方法體

}class impl extends a

}public class demo

}

執行結果:

由以上**可以發現,其與之前的繼承不一樣的是,抽象類定義出了子類必須要覆寫的方法,而之前的類可以由選擇性的決定是否需要覆寫.而且抽象類實際上就比普通類多了些抽象方法而已,其他的定義和普通類完全一樣.

注意點:

1.抽象類不能使用final定義,因為抽象類必須有子類,final定義的類不能有子類;

2.抽象類中可以包含構造方法.因為抽象類中出了包含抽象方法之外,還包含普通方法和屬性,而屬性一定要在構造方法執行完畢之後才可以進行初始化操作(←→見《構造方法》);

3.抽象類中可以不包含抽象方法,但是反過來講,如果有抽象方法,則一定是抽象類,即使抽象類中沒有抽象方法,也不能夠被直接例項化.

4.外部抽象類不可以直接使用static定義,但是在內部類定義的時候可以使用static,這時這個內部的抽象類就表示了乙個外部抽象類.範例3:

abstract class a

}class impl extends a.b

}public class demo

}

執行結果:

範例4:

現在有三種型別:狗,機械人,人

狗具備3個功能:吃,睡,跑;

機械人具備2個功能:吃,工作;

人具備4個功能:吃,睡,跑.工作;

要求設計乙個程式,可以讓這3類不同的型別進行工作.

abstract class action

} public abstract void eat() ;

public abstract void sleep() ;

public abstract void run() ;

public abstract void work() ;

}class dog extends action

public void sleep()

public void run()

public void work()

}class robot extends action

public void sleep()

public void run()

public void work()

}class person extends action

public void sleep()

public void run()

public void work()

}public class demo

}

執行結果:

上例中,如果所有的子類想要正常完成操作,必須按照指定的方法進行覆寫,而此時抽象類所起的作用就是乙個類定義模板的功能.此即:模板設計模式

java物件導向(抽象類)

抽象類 當多個類中出現相同功能,但是功能主體不同。這是可以進行向上抽取,這時,只抽取功能定義,而不抽取功能主體。抽象 就是模糊的意思.抽象類的特點 1,抽象方法一定在抽象類中。2,抽象方法和抽象類都必須被abstract關鍵字修飾。3,抽象類不可以用new建立物件,因為呼叫抽象方法沒意義。4,抽象類...

java 物件導向程式設計 抽象類

我們在上一章中介紹了什麼是介面,也說到了介面就是一組抽象的資料模型,可以理解為一組協議。但實際上,在物件導向的概念中,有乙個知識點是極容易被人與介面混淆的,人們往往會誤解為這兩者是同乙個概念。但不幸的是,兩者雖然有相似之處,但卻是完全不一樣的概念。那麼,如此神秘的它到底是什麼呢?讓我們揭開它的蓋頭來...

物件導向 抽象類

抽象 裡邊有未明確的東西。抽象類的特點 1 抽象方法一定在抽象類中。2 抽象方法和抽象類都必須被abstract關鍵字修飾。3 抽象類不可以用new建立物件,因為呼叫抽象方法沒意義。4 抽象類中的抽象方法要被使用,必須由子類複寫其所有的抽象方法後,建立子類物件呼叫。如果子類只覆蓋部分抽象方法,那麼該...