簡單來說
抽象類通常用來作為一個(gè)類族的最頂端的父類,用最底層的類表示現(xiàn)實(shí)中的具體事物,用最頂層的類表示該類族所有事物的共性。用abstract關(guān)鍵字類修飾一個(gè)類,該類叫做抽象類。
有抽象類那么肯定也有抽象方法,什么是抽象方法呢?
抽象方法就是有名字,形參列表,返回值,沒有方法體的方法就做抽象方法。
抽象方法和抽象類的關(guān)系?
凡是沒有方法體的方法必須使用關(guān)鍵字abstract修飾為抽象方法。
凡是含有抽象方法的類必須聲明為抽象類。
1
2
3
4
5
6
7
8
|
abstract class a{ abstract public void f(); //有抽象方法的一定是抽象類 } abstract class b{ public void f(){ //抽象類不一定有抽象方法 } } |
我們從舉例中可以看出a類方法中沒有方法體,因此使用了關(guān)鍵字abstract并且a類也必須聲明為抽象類。
抽象類中的多態(tài):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
abstract class a{ abstract public void f(); } class b extends a{ public void f(){ system.out.println( "bbb" ); } } public class text{ public static void main(string[] args){ a aa= new a(); //錯(cuò)誤,抽象類不能實(shí)例化 b bb= new b(); //ok bb.f() //ok a aa; //抽象類可以定義一個(gè)抽象類的引用,但是不可以定義一個(gè)抽象類對象。 aa=bb; //利用抽象類的引用指向真正實(shí)現(xiàn)的子類,再利用多態(tài)調(diào)用其子類方法。 aa.f(); } } |
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對服務(wù)器之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
原文鏈接:https://blog.csdn.net/mumu1998/article/details/81206664