内部类:在类的内部又定义了一个新的类 内部类分类:静态内部类,类似内部变量;实例内部类,类似于实例变量;局部内部类,类似于局部变量 匿名内部类
public class Test01 {
    // 静态内部类
    static class Inner1{}
    // 实例内部类
    class Inner2{}
    // 方法
    public void doSome(){
        int i = 10;
        // 局部内部类
        class Inner3{}
    }
}
使用内部类编写的代码,可读性很差,所以尽量不要用
public class Test01 {
    public static void main(String[] args) {
        BoBo a = new BoBo();
        DoSome b = new SumReal();
        a.mySum(b, 100, 200);
    }
}
// 接口
interface DoSome{
    // 抽象方法
    int sum(int a, int b);
}
// 接口的实现类
class SumReal implements DoSome{
    // 对方法的实现
    public int sum(int a, int b){
        return a + b;
    }
}

// 求和类
class BoBo{
    // 求和方法
    public void mySum(DoSome c, int a, int b){
        int resValue = c.sum(a,b);
        System.out.println(a + "+" + b + "=" + resValue);
    }
}
以上代码没有使用匿名内部类,我们需要编写实现接口的实现类,现在使用匿名内部类:
public class Test01 {
    public static void main(String[] args) {
        BoBo a = new BoBo();
        // 使用匿名内部类,表示类没有名字
        // 这里的接口表面上是可以直接new,实际上不是
        // 后面的{} 代表对接口的实现
        a.mySum(new DoSome(){
            public int sum(int a, int b){
                return a + b;
            }
        }, 100, 200);
    }
}
// 接口
interface DoSome{
    // 抽象方法
    int sum(int a, int b);
}

// 求和类
class BoBo{
    // 求和方法
    public void mySum(DoSome c, int a, int b){
        int resValue = c.sum(a,b);
        System.out.println(a + "+" + b + "=" + resValue);
    }
}
但是不建议使用匿名内部类,因为一个类没有名字,没有办法重复使用,代码太乱,可读性太差!

发表评论