匿名內部類 學習 to Fin

2021-08-05 22:53:02 字數 1147 閱讀 8788

簡單地說:匿名內部類就是沒有名字的內部類。什麼情況下需要使用匿名內部類?如果滿足下面的一些條件,使用匿名內部類是比較合適的: 

·只用到類的乙個例項。 

·類在定義後馬上用到。 

·類非常小(sun推薦是在4行**以下) 

·給類命名並不會導致你的**更容易被理解。 

在使用匿名內部類時,要記住以下幾個原則: 

·匿名內部類不能有構造方法。 

·匿名內部類不能定義任何靜態成員、方法和類。 

·匿名內部類不能是public,protected,private,static。 

·只能建立匿名內部類的乙個例項。 

·乙個匿名內部類一定是在new的後面,用其隱含實現乙個介面或實現乙個類。 

·因匿名內部類為區域性內部類,所以區域性內部類的所有限制都對其生效。 

下面的例子看起來有點奇怪: 

//在方法中返回乙個匿名內部類 

public class parcel6  

}. // 在這裡需要乙個分號 

} public static void main(string args)  

} cont()方法將下面兩個動作合併在一起:返回值的生成,與表示這個返回值的類的定義!進一步說,這個類是匿名的,它沒有名字。更糟的是,看起來是你正要建立乙個contents物件: 

return new contents() 

但是,在到達語句結束的分號之前,你卻說:「等一等,我想在這裡插入乙個類的定義」: 

return new contents()  

}. 這種奇怪的語法指的是:「建立乙個繼承自contents的匿名類的物件。」通過new 表示式返回的引用被自動向上轉型為對contents的引用。匿名內部類的語法是下面例子的簡略形式: 

class mycontents implements contents  

} return new mycontents(). 

在這個匿名內部類中,使用了預設的構造器來生成contents。下面的**展示的是,如果你的基類需要乙個有引數的構造器,應該怎麼辦: 

public class parcel7  

}. // semicolon required 

} public static void main(string args)  

}

內部類,匿名內部類

內部類 概念 自己想到的 內部類是一種可以直接訪問外部類的一類事物 內部類訪問外部類中的成員,包括私有。之所以可以訪問外部類的成員,是因為內部類持有了外部類的乙個引用,格式為 outer.this.x 外部類訪問內部類成員,需要宣告內部類的物件。其他類訪問內部類方法 當內部類處在成員變數的位置時,就...

內部類 匿名內部類

把類定義在其他類的內部,這個類就叫內部類。內部類分為 成員內部類 區域性內部類。內部類訪問特點 內部類可以直接訪問外部類的成員,包括私有。外部類訪問內部類的成員,必須建立物件。區域性內部類是定義在乙個方法或者乙個作用域裡面的類。public class outer 在區域性位置建立內部類物件,調內部...

內部類 匿名內部類

package org.lgy.study.innerclass public class anonymoustest public static void main string args public string getname public double getprice inte ce p...