1.創(chuàng)建內(nèi)部類#
直接在另一個類內(nèi)部實現(xiàn)一個類绑雄,這個類與外部類是相互獨立的梆靖,并且可以隨意的調(diào)用外部類的成員方法和成員變量捏雌。
2.使用.this與.new#
public class Inner {
public Pacle9 outer() {
return Pacle9.this;
//使用this返回外部類對象
}
public void f(){
System.out.println("fi");
}
}
public Inner inner() {
return new Inner();
}
public static void main(String args[]){
Pacle9 p = new Pacle9();
Pacle9.Inner i = p.inner();
Pacle9.Inner i1 = p.new Inner();
//使用.new關(guān)鍵字創(chuàng)建內(nèi)部類對象
i1.f();
i.outer().f();
}
}
3.方法和作用域內(nèi)內(nèi)部類#
內(nèi)部類可以定義在方法和作用域內(nèi)如"{}"內(nèi)或者"if(exp){}"內(nèi)盛险。
4.匿名內(nèi)部類#
public class Pacle10 {
public Contents contents(final float dest, final String cont) {
//內(nèi)部類中使用常量
//返回一個匿名內(nèi)部類
return new Contents() {
private int cost;
private String c = cont;
{
//相當(dāng)于構(gòu)造函數(shù)
cost = Math.round(dest);
if(cost > 100)
System.out.println("ok!");
}
@Override
public int value() {
return cost;
}
};
}
public static void main(String args[]){
Pacle10 p = new Pacle10();
Contents c = p.contents((float) 109.5, "hehe");
System.out.print(c.value());
}
}
5.嵌套類#
在內(nèi)部類之前加static關(guān)鍵字妓柜,則為嵌套內(nèi)部類,與內(nèi)部類區(qū)別為使用.this不能獲得外部類的引用赂鲤。內(nèi)部類在構(gòu)建時會自動的與外部類關(guān)聯(lián)噪径,嵌套類沒有這種關(guān)聯(lián)機(jī)制。
6.內(nèi)部類的意義#
實現(xiàn)了多繼承数初。通過在一個類內(nèi)部實現(xiàn)多個繼承自不同抽象類的類找爱,即可以實現(xiàn)這個類的多繼承。