一组哩、接口與抽象類區(qū)別
1、 抽象層次不同处渣。抽象類是對(duì)類抽象伶贰,而接口是對(duì)行為的抽象。抽象類是對(duì)整個(gè)類整體進(jìn)行抽象罐栈,包括屬性幕袱、行為,但是接口卻是對(duì)類局部(行為)進(jìn)行抽象悠瞬。
2、 跨域不同涯捻。抽象類所跨域的是具有相似特點(diǎn)的類浅妆,而接口卻可以跨域不同的類。
3障癌、 設(shè)計(jì)層次不同凌外。對(duì)于抽象類而言,它是自下而上來(lái)設(shè)計(jì)的涛浙,我們要先知道子類才能抽象出父類康辑,而接口則不同,它根本就不需要知道子類的存在轿亮,只需要定義一個(gè)規(guī)則即可疮薇,至于什么子類、什么時(shí)候怎么實(shí)現(xiàn)它一概不知我注。
java提高篇(五)-----抽象類與接口 - chenssy - 博客園
1按咒、 抽象類在java語(yǔ)言中所表示的是一種繼承關(guān)系,一個(gè)子類只能存在一個(gè)父類但骨,但是可以存在多個(gè)接口励七。
2、 在抽象類中可以擁有自己的成員變量和非抽象類方法奔缠,但是接口中只能存在靜態(tài)的不可變的成員數(shù)據(jù)(不過(guò)一般都不在接口中定義成員數(shù)據(jù))掠抬,而且它的所有方法都是抽象的。
3校哎、抽象類和接口所反映的設(shè)計(jì)理念是不同的两波,抽象類所代表的是“is-a”的關(guān)系,而接口所代表的是“l(fā)ike-a”的關(guān)系。抽象類和接口是java語(yǔ)言中兩種不同的抽象概念雨女,他們的存在對(duì)多態(tài)提供了非常好的支持谚攒,雖然他們之間存在很大的相似性。但是對(duì)于他們的選擇往往反應(yīng)了您對(duì)問(wèn)題域的理解氛堕。只有對(duì)問(wèn)題域的本質(zhì)有良好的理解馏臭,才能做出正確、合理的設(shè)計(jì)讼稚。
二括儒、回調(diào)函數(shù)
類A調(diào)用類B的方法b(傳入相關(guān)信息),類B的方法在執(zhí)行完后锐想,會(huì)將結(jié)果寫到(再回調(diào))類A的方法a帮寻,完成動(dòng)作。(其實(shí)方法a就是傳說(shuō)中的回調(diào)方法啦)
A調(diào)用某個(gè)工具類的方法去幫助自己處理一些操作并傳入?yún)?shù)赠摇,該工具類的方法將傳入的參數(shù)處理后固逗,在交付給A類中的回調(diào)方法來(lái)做進(jìn)一步的使用。該回調(diào)方法可放在某個(gè)接口類中藕帜√陶郑可以考慮異步實(shí)現(xiàn)以及匿名內(nèi)部類問(wèn)題。詳細(xì)參考:回調(diào)函數(shù)(callback)是什么洽故? - futeng 的回答 - 知乎
三贝攒、線程池與同步機(jī)制
ThreadLocal和線程同步機(jī)制都是為了解決多線程中相同變量的訪問(wèn)沖突問(wèn)題。
在同步機(jī)制中时甚,通過(guò)對(duì)象的鎖機(jī)制保證同一時(shí)間只有一個(gè)線程訪問(wèn)變量隘弊。這時(shí)該變量是多個(gè)線程共享的,使用同步機(jī)制要求程序慎密地分析什么時(shí)候?qū)ψ兞窟M(jìn)行讀寫荒适,什么時(shí)候需要鎖定某個(gè)對(duì)象梨熙,什么時(shí)候釋放對(duì)象鎖等繁雜的問(wèn)題,程序設(shè)計(jì)和編寫難度相對(duì)較大吻贿。
而ThreadLocal則從另一個(gè)角度來(lái)解決多線程的并發(fā)訪問(wèn)串结。ThreadLocal會(huì)為每一個(gè)線程提供一個(gè)獨(dú)立的變量副本,從而隔離了多個(gè)線程對(duì)數(shù)據(jù)的訪問(wèn)沖突舅列。因?yàn)槊恳粋€(gè)線程都擁有自己的變量副本肌割,從而也就沒(méi)有必要對(duì)該變量進(jìn)行同步了。ThreadLocal提供了線程安全的共享對(duì)象帐要,在編寫多線程代碼時(shí)把敞,可以把不安全的變量封裝進(jìn)ThreadLocal。
對(duì)于多線程資源共享的問(wèn)題榨惠,同步機(jī)制采用了“以時(shí)間換空間”的方式奋早,而ThreadLocal采用了“以空間換時(shí)間”的方式盛霎。前者僅提供一份變量,讓不同的線程排隊(duì)訪問(wèn)耽装,而后者為每一個(gè)線程都提供了一份變量愤炸,因此可以同時(shí)訪問(wèn)而互不影響。