微型技术博客之匿名内部类
這學(xué)期選修了安卓手機(jī)平臺(tái)開(kāi)發(fā)課程,開(kāi)發(fā)使用的是java語(yǔ)言,所以在這個(gè)過(guò)程中我又鞏固了很多java的知識(shí)點(diǎn),我記得在前年下半年的時(shí)候我學(xué)了java這門(mén)課程,但是后來(lái)有很長(zhǎng)一段時(shí)間沒(méi)有寫(xiě)java程序了,導(dǎo)致有很多語(yǔ)法什么之類(lèi)的慢慢淡忘,現(xiàn)在借此機(jī)會(huì),又慢慢的一點(diǎn)點(diǎn)的撿拾起來(lái)了。今天我的這篇微型技術(shù)博客探討的就是java里面的匿名內(nèi)部類(lèi)。
1.匿名內(nèi)部類(lèi)其實(shí)就是內(nèi)部類(lèi)的簡(jiǎn)寫(xiě)格式。
2..定義匿名內(nèi)部類(lèi)的前提:內(nèi)部類(lèi)必須是繼承一個(gè)抽象類(lèi)或者實(shí)現(xiàn)接口。只要一個(gè)類(lèi)是抽象的或是一個(gè)接口,那么其子類(lèi)中的方??? 法都可以使用匿名內(nèi)部類(lèi)來(lái)實(shí)現(xiàn)
3.匿名內(nèi)部類(lèi)的格式:? new 父類(lèi)或者接口(){定義子類(lèi)的內(nèi)容}
4.其實(shí)匿名內(nèi)部類(lèi)就是一個(gè)匿名子類(lèi)對(duì)象
5.使用匿名內(nèi)部類(lèi)我們必須要繼承一個(gè)父類(lèi)或者實(shí)現(xiàn)一個(gè)接口,當(dāng)然也僅能只繼承一個(gè)父類(lèi)或者實(shí)現(xiàn)一個(gè)接口。同時(shí)它也是沒(méi)有class關(guān)鍵字,這是因?yàn)槟涿麅?nèi)部類(lèi)是直接使用new來(lái)生成一個(gè)對(duì)象的引用。當(dāng)然這個(gè)引用是隱式的。
6.注意點(diǎn):
? ? ? 匿名內(nèi)部類(lèi)中是不能定義構(gòu)造函數(shù)的。
????? 匿名內(nèi)部類(lèi)中不能存在任何的靜態(tài)成員變量和靜態(tài)方法。
????? 匿名內(nèi)部類(lèi)為局部?jī)?nèi)部類(lèi),所以局部?jī)?nèi)部類(lèi)的所有限制同樣對(duì)匿名內(nèi)部類(lèi)生效。
????? 匿名內(nèi)部類(lèi)不能是抽象的,它必須要實(shí)現(xiàn)繼承的類(lèi)或者實(shí)現(xiàn)的接口的所有抽象方法
1匿名內(nèi)部類(lèi)的實(shí)現(xiàn)
?
abstractclass Time{
? ? publicabstractvoid starttime();
}
?
publicclass Date{
? ? publicstaticvoid main(String[] args) {
? ? ? ? ?Time t =new Time(){
? ? ? ? ? ? publicvoid starttime() {
? ? ? ? ? ? ? ? System.out.println("the time used is:");
? ? ? ? ? ? }
? ? ? ? };
? ? ? ? t.starttime();
? ? }
}
?
在接口上使用匿名內(nèi)部類(lèi)
interface Time {
? ? publicvoid starttime();
}
publicclass Date{
? ? publicstaticvoid main(String[] args) {
? ? ? ? ?Time t =new Time(){
? ? ? ? ? ? publicvoid starttime() {
? ? ? ? ? ? ? ? System.out.println("the time used is:");
? ? ? ? ? ? }
? ? ? ? };
? ? ? ? t.starttime();
? ? }
}
?
?多線(xiàn)程實(shí)現(xiàn)匿名內(nèi)部類(lèi)
publicclass Sum{
? ? publicstaticvoid main(String[] args) {
? ? ? ? Thread s= new Thread() {
publicvoid count() {
? i=1;
?S=0;
? ? ? ? ? ? ? ? while(i<=100) {
? ? ? ? ? ? ? ? ?s=s+i;
? ? ? ? ? ? ? ? ?i++;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
}
System.out.print(s);
?
? ? ? ? };
? ? ? ? s.start();
? ? }
}
?
Runnable接口內(nèi)部類(lèi)實(shí)現(xiàn)
publicclass Sum{
? ? publicstaticvoid main(String[] args) {
? ? ? ? Runnabler = new Runnable(){
publicvoid count() {
?i=1;
?S=0;
? ? ? ? ? ? ? ? while(i<=100) {
? ? ? ? ? ? ? ? ?s=s+i;
? ? ? ? ? ? ? ? ?i++;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
}
System.out.print(s);
?
? ? ? ? };
? ? ? ? s.start();
publicclass TestAnonymousInterClass{ ?
? ? publicstaticvoid main(String args[]){ ?
? ? ? ? TestAnonymousInterClass test=new TestAnonymousInterClass(); ?
? ? ? ? test.show(); ?
? ? } ?
? ? //在這個(gè)方法中構(gòu)造了一個(gè)匿名內(nèi)部類(lèi) ?
? ? privatevoid show(){ ?
? ? ? ? Out anonyInter=new Out(){// 獲取匿名內(nèi)部類(lèi)實(shí)例 ?
? ? ? ? ? ? ??
? ? ? ? ? ? void show(){//重寫(xiě)父類(lèi)的方法 ?
? ? ? ? ? ? ? ? System.out.println("this is Anonymous InterClass showing."); ?
? ? ? ? ? ? } ?
? ? ? ? }; ?
? ? ? ? anonyInter.show();// 調(diào)用其方法 ?
? ? } ?
} ??
?
// 這是一個(gè)已經(jīng)存在的類(lèi),匿名內(nèi)部類(lèi)通過(guò)重寫(xiě)其方法,將會(huì)獲得另外的實(shí)現(xiàn) ?
class Out{ ?
? ? void show(){ ?
? ? ? ? System.out.println("this is Out showing."); ?
? ? } ?
}?
總結(jié)
以上是生活随笔為你收集整理的微型技术博客之匿名内部类的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 动态生成的chosen实现模糊查询
- 下一篇: 局域网DNS劫持