1.抽象與封裝有何區(qū)別
- 抽象是從眾多的事物中抽取共同的岸浑、本質(zhì)性的特征烈炭,而舍棄其非本質(zhì)的特征。
- 封裝則是將抽象得到的數(shù)據(jù)和行為(或功能)相結(jié)合优妙,形成一個(gè)有機(jī)的整體乘综,也就是將數(shù)據(jù)與操作數(shù)據(jù)的源代碼進(jìn)行有機(jī)的整體,也就是將數(shù)據(jù)與操作數(shù)據(jù)的源代碼進(jìn)行有機(jī)的結(jié)合套硼,形成“類”卡辰,其中數(shù)據(jù)和函數(shù)都是類的成員。
- 抽象是更通用的術(shù)語,它的實(shí)現(xiàn)可以由子類完成九妈。例如反砌,List類是一種JavaSE抽象,List的具體子類ArrayList和LinkedList萌朱。如果沒有通過封裝隱藏其內(nèi)部狀態(tài)宴树,抽象也不可能實(shí)現(xiàn),如果一個(gè)類暴露其內(nèi)部狀態(tài)晶疼,它不能再其內(nèi)部完全掌控改變這個(gè)狀態(tài)酒贬,那么這也不是抽象。
- 封裝是作為抽象的一部分翠霍。封裝是對(duì)象封裝它自己的狀態(tài)锭吨,并對(duì)外部隱藏,該類意外的其他類必須通過它的方法進(jìn)行交互寒匙,但不能直接訪問該類的狀態(tài)零如。所以封裝的類是為了抽象了有關(guān)其狀態(tài)的實(shí)現(xiàn)細(xì)節(jié)。
2.接口與抽象類有何卻別锄弱?
1.抽象類可以提供成員方法實(shí)現(xiàn)細(xì)節(jié)考蕾,而接口中只能存在public abstract抽象方法。
2.抽象類的成員變量可以是各種類型会宪,而接口中的成員變量必須用public static final修飾肖卧。
3.接口中不能含有靜態(tài)代碼塊以及靜態(tài)方法,而抽象類可以有靜態(tài)代碼塊和靜態(tài)方法狈谊。
4.一個(gè)類只能繼承一個(gè)抽象類喜命,而一個(gè)類可以實(shí)現(xiàn)多個(gè)接口沟沙。
3.同一個(gè)程序河劝,但不同的Activity是否可以放在不同的Task任務(wù)棧中?
- 可以在清單文件中配置Activity的taskAffinity屬性矛紫,這樣就可以指定在其他棧中赎瞎。
- 在BroadCastReceiver中或者service以及application中啟動(dòng)Activity中啟動(dòng)Activity需要給intent加上FLAG_ACTIVITY_NEW_TASK
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK) - 可以指定activity的啟動(dòng)模式為單一實(shí)例模式
android:launchMode="singleInstance"