内部类常实现监听、内部线程等
1、什么是内部类
class A{
class B{
}
}
编译生成A$B.class(外部类$内部类.class)
class Test{
public static void main(String args[]){
A a = new A();
A.B b = new A().new B();//生成内部类对象,必须有外部类对象
}
}
因此内部类可以使用外部类的成员变量和成员函数。
2、内部类的使用方法
A.java
class A{
int i;
class B{
int j;
int funB(){
int result = i + j;
System.out.println(result);
return result;
}
}
}
Test.java
class Test{
public static void main(String args[]){
A a = new A();
A.B b = a.new B();//生成内部类对象,必须有外部类对象
a.i = 3;
b.j = 1;
b.funB();
}
}
3、匿名内部类的使用方法
A.java
interface A{
public void doSomething();
}
B.java
class B{
public void fun(A a){
System.out.println("B fun");
a.doSomething();
}
}
AImpl.java
class AImpl implements A{
public void doSomething(){
System.out.println("AImpl doSomething");
}
}
Test.java
class Test{
public static void main(String args[]){
AImpl aImpl = new AImpl();
A a = aImpl;
B b = new B();
b.fun(a);
}
}
将Test.java改为匿名内部类
class Test{
public static void main(String args[]){
//AImpl aImpl = new AImpl();
//A a = aImpl;
B b = new B();
b.fun(new A(){
public void doSomething(){
System.out.println("匿名内部类doSomething()");
}
});
}
}