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.内部类的意义#
实现了多继承。通过在一个类内部实现多个继承自不同抽象类的类,即可以实现这个类的多继承。