https://blog.csdn.net/chenssy/article/details/12858267
1.抽象類提供了繼承的概念,它的出發(fā)點(diǎn)就是用來繼承,否則它沒有存在的意義,在一個(gè)以抽象類為節(jié)點(diǎn)的繼承關(guān)系等級鏈中,葉子節(jié)點(diǎn)一定是具體的實(shí)現(xiàn)類。
使用抽象類需要注意的幾點(diǎn):
1\. 抽象類不能被實(shí)例化
2\. 抽象方法必須由子類進(jìn)行重寫
3\. 只要包含一個(gè)抽象方法,該類就必須定義為抽象類,不管是不是還包含其他方法
4\. abstract 不能與 final并列修飾同一個(gè)類,abstract不能與private、static、final或native并列修飾同一個(gè)方法。
2.接口
接口是抽象類的延伸,java為了保證數(shù)據(jù)安全是不支持多重繼承的,但是接口不同,一個(gè)類可以實(shí)現(xiàn)多個(gè)接口,不管這些接口有沒有關(guān)系,所以接口彌補(bǔ)了不能多重繼承的缺陷,接口和抽象類共同使用,既可以保證數(shù)據(jù)的安全性又可以實(shí)現(xiàn)多重繼承。
注意一下幾個(gè)問題:
1\. interface 的方法訪問權(quán)限會自動(dòng)被聲明為public,確切的說只能為public,顯示的聲明為protected、private會出錯(cuò)。
2\. 接口中可以定義“成員變量”,或者說不可變的常量,因?yàn)榻涌谥小俺蓡T變量”會自動(dòng)變?yōu)閜ublic static final,可以通過類名訪問:ImplementsClass.name。
3\. 接口中不存在實(shí)現(xiàn)的方法。
4\. 實(shí)現(xiàn)接口的非抽象類必須實(shí)現(xiàn)接口的所有方法,抽象類可以不必。
5\. 不能使用new操作符實(shí)例化一個(gè)接口。
6\. 在實(shí)現(xiàn)多接口的時(shí)候,要避免方法名的重復(fù)。