内部类与匿名内部类的区别

来源:互联网 发布:淘宝卖家升级企业店铺 编辑:程序博客网 时间:2024/05/16 03:32
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类的一个成员,多用于事件监听和线程应用

匿名内部类不能有构造方法。  匿名内部类不能定义任何静态成员、方法和类。  只能创建匿名内部类的一个实例一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。  因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效。

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);}