闭包和局部内部类的区别

  1. 局部内部类就像是方法里面的一个局部变量一样,是不能有public、protected、private以及static修饰符的。
  2. 闭包(Closure)是一种能被调用的对象,它保存了创建它的作用域的信息。JAVA并不能显式地支持闭包,但是在JAVA中,闭包可以通过“接口+内部类”来实现。

例如:一个接口程序员和一个基类作家都有一个相同的方法work,相同的方法名,但是其含义完全不同,这时候就需要闭包。

class Food{
    public static final String name = "Food";
    private static int num = 20;
    public Food() {
        System.out.println("Delicious Food");
    }

    public Active getEat() {
        return new EatActive();
    }
    private class EatActive implements Active {
        @Override
        public void eat() {
            if (num == 0) {
                System.out.println("吃货,已经吃没了");
            }
            num --;
            System.out.println("吃货,你吃了一份了");
        }
    }

    public void currentNum() {
        System.out.println("还剩:"+num+"份");
    }
}

interface Active{
    void eat();
}

 

 

你可能感兴趣的:(Java内部类)