局部内部类、匿名内部类、静态内部类的讲解

有关于内部类的讲解,见此篇
下面分别将讲解局部内部类、匿名内部类、静态内部类。

1. 局部内部类

可以在方法中定义内部类,甚至在语句块中也可以定义内部类,
这种情况通常是某个方法需要创建一个类来辅助完成该方法的功能,而这个类只用在该方法中。
局部内部类需要配合接口来一起使用。

interface Speaker {
    void speak();
}

class LocalInnerClass {

    Speaker getSpeaker(String str) {
        class MySpeaker implements Speaker {
            @Override
            public void speak() {
                System.out.println(str);
            }
        }

        return new MySpeaker();
    }
}

public class App {
    public static void main(String[] args) {
        LocalInnerClass li = new LocalInnerClass();
        li.getSpeaker("good").speak();
    }
}

局部内部类限定了该类只能在局部作用域内被访问,因此是无法直接返回该类型的对象的,需要向上转型为其实现的接口类型。因此,局部内部类不能使用public和private进行声明。

2. 匿名内部类

3. 静态内部类

你可能感兴趣的:(#,Java基础篇,java,开发语言)