Java語言中對于抽象類定義進(jìn)行支持兩種機(jī)制:abstract class 擴(kuò)展extends和 interface 實(shí)現(xiàn)implements。
abstract class和interface在對于抽象類定義的支持方面具有很大的相似性,甚至可以相互替換(程序不會(huì)出錯(cuò),功能也可以同等實(shí)現(xiàn))。
因此很多開發(fā)者在進(jìn)行抽象類定義時(shí)對于abstract class和interface的選擇顯得比較隨意(和弄不清兩種抽象機(jī)制有關(guān)?)。
其實(shí),abstract class 和 interface 區(qū)別開來還是容易的。只要弄清楚描述對象本質(zhì)和抽象概念的關(guān)系就好區(qū)分了。
當(dāng)描述對象本質(zhì)和抽象概念是"is-a"關(guān)系時(shí)使用abstract來抽象描述對象;當(dāng)描述對象本質(zhì)和抽象概念是"like-a"關(guān)系時(shí)使用interface來抽象該對象。
?
舉個(gè)例子:
我們來抽象手機(jī),作為一種通訊工具。它的基本功能是拔電話(本質(zhì)),不具備此功能的還能稱為手機(jī)?然后大家知道,手機(jī)還有許多的擴(kuò)展功能,各家可能都不一樣。

interface?Dict
{?
????void?findWord();?
}?
class?XXPaiTelephone?
extends?Call?

implements?Dict
{?

????void?dial()
{??}?

????void?findWord()
{??}?
}
上面基本實(shí)現(xiàn)對某品牌電話的一個(gè)抽象描述。因?yàn)槊枋鰧ο蟊举|(zhì)是電話("is-a"關(guān)系),所以在抽象電話的功能時(shí)用的是abstract,而在抽象詞典功能("like-a"關(guān)系,帶詞典功能手機(jī),像一部詞典)時(shí)就的就是interface。
如果換了描述對象,假如電話換成是學(xué)習(xí)機(jī)。此時(shí),查詞典成了本質(zhì)("is-a"關(guān)系)。打電話的功能就成了一種擴(kuò)展功能("like-a"的關(guān)系,像一個(gè)電話,其實(shí)它主要是用來查詞典的)

abstract?class?Dict
{?
????abstract?void?findWord();
}
?

interface?Call
{?
????void?dial();?
}?
class?XXPLearnMachine?
extends?Dict?

implements?Call
{?

????void?findWord()
{??}?

????void?dial()
{??}?
}
參考:http://www.cnblogs.com/Mozier/archive/2006/04/08/369851.html
abstract class和interface在對于抽象類定義的支持方面具有很大的相似性,甚至可以相互替換(程序不會(huì)出錯(cuò),功能也可以同等實(shí)現(xiàn))。
因此很多開發(fā)者在進(jìn)行抽象類定義時(shí)對于abstract class和interface的選擇顯得比較隨意(和弄不清兩種抽象機(jī)制有關(guān)?)。
其實(shí),abstract class 和 interface 區(qū)別開來還是容易的。只要弄清楚描述對象本質(zhì)和抽象概念的關(guān)系就好區(qū)分了。
當(dāng)描述對象本質(zhì)和抽象概念是"is-a"關(guān)系時(shí)使用abstract來抽象描述對象;當(dāng)描述對象本質(zhì)和抽象概念是"like-a"關(guān)系時(shí)使用interface來抽象該對象。
?
舉個(gè)例子:
我們來抽象手機(jī),作為一種通訊工具。它的基本功能是拔電話(本質(zhì)),不具備此功能的還能稱為手機(jī)?然后大家知道,手機(jī)還有許多的擴(kuò)展功能,各家可能都不一樣。
1
abstract?class?Call
{?
2
//?
3
abstract?void?dial();?
4
}?



2

3

4


















上面基本實(shí)現(xiàn)對某品牌電話的一個(gè)抽象描述。因?yàn)槊枋鰧ο蟊举|(zhì)是電話("is-a"關(guān)系),所以在抽象電話的功能時(shí)用的是abstract,而在抽象詞典功能("like-a"關(guān)系,帶詞典功能手機(jī),像一部詞典)時(shí)就的就是interface。
如果換了描述對象,假如電話換成是學(xué)習(xí)機(jī)。此時(shí),查詞典成了本質(zhì)("is-a"關(guān)系)。打電話的功能就成了一種擴(kuò)展功能("like-a"的關(guān)系,像一個(gè)電話,其實(shí)它主要是用來查詞典的)





?

















參考:http://www.cnblogs.com/Mozier/archive/2006/04/08/369851.html