Java抽象類(lèi)的概念講解
簡(jiǎn)單來(lái)說(shuō)
抽象類(lèi)通常用來(lái)作為一個(gè)類(lèi)族的最頂端的父類(lèi),用最底層的類(lèi)表示現(xiàn)實(shí)中的具體事物,用最頂層的類(lèi)表示該類(lèi)族所有事物的共性。用abstract關(guān)鍵字類(lèi)修飾一個(gè)類(lèi),該類(lèi)叫做抽象類(lèi)。
有抽象類(lèi)那么肯定也有抽象方法,什么是抽象方法呢?
抽象方法就是有名字,形參列表,返回值,沒(méi)有方法體的方法就做抽象方法。
抽象方法和抽象類(lèi)的關(guān)系?
凡是沒(méi)有方法體的方法必須使用關(guān)鍵字abstract修飾為抽象方法。
凡是含有抽象方法的類(lèi)必須聲明為抽象類(lèi)。
abstract class A{ abstract public void f();//有抽象方法的一定是抽象類(lèi) } abstract class B{ public void f(){ //抽象類(lèi)不一定有抽象方法 } }
我們從舉例中可以看出A類(lèi)方法中沒(méi)有方法體,因此使用了關(guān)鍵字abstract并且A類(lèi)也必須聲明為抽象類(lèi)。
抽象類(lèi)中的多態(tài):
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ò)誤,抽象類(lèi)不能實(shí)例化 B bb=new B();//ok bb.f()//OK A aa;//抽象類(lèi)可以定義一個(gè)抽象類(lèi)的引用,但是不可以定義一個(gè)抽象類(lèi)對(duì)象。 aa=bb;//利用抽象類(lèi)的引用指向真正實(shí)現(xiàn)的子類(lèi),再利用多態(tài)調(diào)用其子類(lèi)方法。 aa.f(); } }
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
java日期格式化YYYY-MM-dd遇坑指南小結(jié)
本文主要介紹了java日期格式化YYYY-MM-dd遇坑指南小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08MyBatisPlus代碼生成器的原理及實(shí)現(xiàn)詳解
這篇文章主要為大家詳細(xì)介紹了MyBatisPlus中代碼生成器的原理及實(shí)現(xiàn),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)MyBatisPlus有一定幫助,需要的可以參考一下2022-08-08SpringBoot關(guān)于自動(dòng)注入mapper為空的坑及解決
這篇文章主要介紹了SpringBoot關(guān)于自動(dòng)注入mapper為空的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07Java8實(shí)現(xiàn)對(duì)List<Integer>的求和
這篇文章主要介紹了Java8實(shí)現(xiàn)對(duì)List<Integer>的求和方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05Mybatis輸入輸出映射及動(dòng)態(tài)SQL Review
這篇文章主要介紹了Mybatis輸入輸出映射及動(dòng)態(tài)SQL Review,需要的朋友可以參考下2017-02-02