建站學(xué)院(LieHuo.Net)網(wǎng)絡(luò)編程 最近學(xué)習(xí)PHP5接口的過程中遇到了困難 ,書中說是實(shí)現(xiàn)多重繼承的一種方式,但我依然不知道具體該如何實(shí)現(xiàn)。在網(wǎng)上查PHP接口的資料很少,就查了java的,其實(shí)基本上都差不多??赐辍冻吻錔ava(接口與繼承)》這篇文章才恍然大悟,原來我一開始理解就有誤,所謂的多重繼承是指接口繼承類,而不是類繼承接口。
文章中提到了OO的抽象,正如文章中的那句話——"抽象就是抽去像的部分",很形象,以前想到抽象總是認(rèn)為很難理解,抽象嘛,哈哈,現(xiàn)在就很容易理解了,這也正是接口和抽象類所要做的事情。
文章中還有很多觀點(diǎn)也讓我受益匪淺,羅列如下:
OO的精髓,我以為,是對(duì)對(duì)象的抽象。
接口的作用,一言以蔽之,就是標(biāo)志類的類別(type of class)。把不同類型的類歸于不同的接口,可以更好的管理他們。
繼承的意義也在于抽象,而不是代碼重用。
看完這篇文章,現(xiàn)在基本上理解接口、抽象類、繼承該如何應(yīng)用了。
原文如下:
澄清Java(接口與繼承)計(jì)算機(jī)學(xué)院研二的兄弟與我討論Java,一見面,幾個(gè)問題全是關(guān)于接口,接口有什么用?為什么要用接口?什么時(shí)候該使用接口?很慶幸他們不是問我 Java如何連接SQL Server,或者是如何開發(fā)J2EE應(yīng)用,這類問題有殺傷力,避之則吉。今年計(jì)算機(jī)學(xué)院本科有個(gè)畢業(yè)設(shè)計(jì)課題是做J2ME,選這個(gè)題目的學(xué)生在5月末都還在苦著臉研究java.util.*這個(gè)包,這個(gè)這個(gè)……唉。
大多數(shù)人認(rèn)為,接口的意義在于頂替多重繼承。眾所周知Java沒有c++那樣多重繼承的機(jī)制,但是卻能夠?qū)嵶鞫鄠€(gè)接口。其實(shí)這樣做是很牽強(qiáng)的,接口和繼承是完全不同的東西,接口沒有能力代替多重繼承,也沒有這個(gè)義務(wù)。接口的作用,一言以蔽之,就是標(biāo)志類的類別(type of class)。把不同類型的類歸于不同的接口,可以更好的管理他們。OO的精髓,我以為,是對(duì)對(duì)象的抽象,最能體現(xiàn)這一點(diǎn)的就是接口。為什么我們討論設(shè)計(jì)模式都只針對(duì)具備了抽象能力的語言(比如c++、java、c#等),就是因?yàn)樵O(shè)計(jì)模式所研究的,實(shí)際上就是如何合理的去抽象。(cowboy的名言是 “抽象就是抽去像的部分”,看似調(diào)侃,實(shí)乃至理)。
設(shè)計(jì)模式中最基礎(chǔ)的是工廠模式(Factory),在我最近的一個(gè)很簡(jiǎn)單的應(yīng)用中,我想盡量的讓我的程序能夠在多個(gè)數(shù)據(jù)庫間移植,當(dāng)然,這涉及很多問題,單是如何兼容不同DBMS的SQL就讓人頭痛。我們不妨先把問題簡(jiǎn)單化,只考慮如何連接不同的數(shù)據(jù)庫。