抽象类的作用是什么?
一、什么是抽象類
在面向?qū)ο蟮母拍钪校械膶ο蠖际峭ㄟ^類來描繪的,但是反過來,并不是所有的類都是用來描繪對象的,如果一個(gè)類中沒有包含足夠的信息來描繪一個(gè)具體的對象,這樣的類就是抽象類。
抽象類除了不能實(shí)例化對象之外,類的其它功能依然存在,成員變量、成員方法和構(gòu)造方法的訪問方式和普通類一樣。
由于抽象類不能實(shí)例化對象,所以抽象類必須被繼承,才能被使用。也是因?yàn)檫@個(gè)原因,通常在設(shè)計(jì)階段決定要不要設(shè)計(jì)抽象類。
父類包含了子類集合的常見的方法,但是由于父類本身是抽象的,所以不能使用這些方法。
在Java中抽象類表示的是一種繼承關(guān)系,一個(gè)類只能繼承一個(gè)抽象類,而一個(gè)類卻可以實(shí)現(xiàn)多個(gè)接口。
二、為什么要用抽象類?抽象類有什么用?
老是在想為什么要引用抽象類,一般類不就夠用了嗎。一般類里定義的方法,子類也可以覆蓋,沒必要定義成抽象的啊。
其實(shí)不是說抽象類有什么用,一般類確實(shí)也能滿足應(yīng)用,但是現(xiàn)實(shí)中確實(shí)有些父類中的方法確實(shí)沒有必要寫,因?yàn)楦鱾€(gè)子類中的這個(gè)方法肯定會有不同,所以沒有必要再父類里寫。當(dāng)然你也可以把抽象類都寫成非抽象類,但是這樣沒有必要。
而寫成抽象類,這樣別人看到你的代碼,或你看到別人的代碼,你就會注意抽象方法,而知道這個(gè)方法是在子類中實(shí)現(xiàn)的,所以,有個(gè)提示作用。
三、抽象類和接口的區(qū)別
抽象類
抽象類是用來捕捉子類的通用特性的 。它不能被實(shí)例化,只能被用作子類的超類。抽象類是被用來創(chuàng)建繼承層級里子類的模板。
接口
接口是抽象方法的集合。如果一個(gè)類實(shí)現(xiàn)了某個(gè)接口,那么它就繼承了這個(gè)接口的抽象方法。這就像契約模式,如果實(shí)現(xiàn)了這個(gè)接口,那么就必須確保使用這些方法。接口只是一種形式,接口自身不能做任何事情。
抽象類和接口的對比
什么時(shí)候使用抽象類和接口
- 如果你擁有一些方法并且想讓它們中的一些有默認(rèn)實(shí)現(xiàn),那么使用抽象類吧。
- 如果你想實(shí)現(xiàn)多重繼承,那么你必須使用接口。由于Java不支持多繼承,子類不能夠繼承多個(gè)類,但可以實(shí)現(xiàn)多個(gè)接口。因此你就可以使用接口來解決它。
- 如果基本功能在不斷改變,那么就需要使用抽象類。如果不斷改變基本功能并且使用接口,那么就需要改變所有實(shí)現(xiàn)了該接口的類。
- 假如有一個(gè)接口,五個(gè)實(shí)現(xiàn)類,現(xiàn)在的需求可能要往接口加一個(gè)方法,這樣就要改動五個(gè)實(shí)現(xiàn)類,但需求只需要改動其中兩個(gè)實(shí)現(xiàn)類,可以再定義一個(gè)抽象類去實(shí)現(xiàn)這個(gè)接口,在抽象類中新增這個(gè)方法,然后其他兩個(gè)實(shí)現(xiàn)類實(shí)現(xiàn)這個(gè)抽象類就好了,或者使用 Java 8 中的新特性,在接口中新增默認(rèn)方法或者靜態(tài)方法。
更多編程相關(guān)知識,請?jiān)L問:編程學(xué)習(xí)!!
以上就是抽象類的作用是什么?的詳細(xì)內(nèi)容,更多請關(guān)注風(fēng)君子博客其它相關(guān)文章!
總結(jié)
以上是生活随笔為你收集整理的抽象类的作用是什么?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle的函数有哪些(Oracle)
- 下一篇: Excel2016如何使用?Excel2