1.創建內部類#
直接在另一個類內部實現一個類,這個類與外部類是相互獨立的,并且可以隨意的調用外部類的成員方法和成員變量。
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關鍵字創建內部類對象
i1.f();
i.outer().f();
}
}
3.方法和作用域內內部類#
內部類可以定義在方法和作用域內如"{}"內或者"if(exp){}"內。
4.匿名內部類#
public class Pacle10 {
public Contents contents(final float dest, final String cont) {
//內部類中使用常量
//返回一個匿名內部類
return new Contents() {
private int cost;
private String c = cont;
{
//相當于構造函數
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.嵌套類#
在內部類之前加static關鍵字,則為嵌套內部類,與內部類區別為使用.this不能獲得外部類的引用。內部類在構建時會自動的與外部類關聯,嵌套類沒有這種關聯機制。
6.內部類的意義#
實現了多繼承。通過在一個類內部實現多個繼承自不同抽象類的類,即可以實現這個類的多繼承。