1.内部类:A类是B类的一个成员变量,A类可以调用B类的成员变量,可以区分static,可以使用B类方法的局部变量,A类可以有多个实例
public class B {
private A a;
private int num;
public static void main(String[] args) {
B b = new B();
A a = b.getA();
int c = 1;
System.out.println(a.getAge(c));//使用B类方法局部变量
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public A getA() {
return a;
}
public void setA(A a) {
this.a = a;
}
}
public class A {
public int getAge(int age) {
return age;
}
public void getBClas() {
B b = new B();
b.getNum();//调用B类成员变量
}
}
2.匿名内部类:A类是B类的一个成员,多用于事件监听和线程应用
匿名内部类不能有构造方法。
public class B {
private int b;
public A func() {
return new A() {
public int geta(int a) {
return 0;
}
};
}
public static void main(String[] args) {
B b = new B();
A a = b.func();
System.out.println(a.geta(5));
System.out.println(a.getB()); //不对
}
public int getB() {
return b;
}
public void setB(int b) {
this.b = b;
}
}
public interface A {
public int geta(int a);
}