什么是内部类?
内部类说通俗一些就是定义在一个类内部的类。内部类的实现方式
内部类:成员内部类、局部内部类、匿名内部类、静态内部类。实现Demo
(1)成员内部类
public class Out{
class Inner{
...
}
public Inner getInner(){
return new Inner();
}
}
public class Demo{
public static void main(String[] args){
Out out = new Out();
Out.Inner inner = out.getInner();
/**
Out out = new Out();
Out.Inner inner = out.new Inner();
*/
}
}
(2)局部(方法)内部类
public class Out{
public void print(){
final String test="123";
class InnerPrint{
public InnerPrint(){
System.out.println(test);
}
}
new InnerPrint();
}
}
public class Demo{
public static void main(String[] args){
Out out = new Out();
out.print();
}
}
说明:局部内部类不能用public和private修饰,这种类的作用域就在方法中,这种类使用的局部变量必须是final修饰的,这是由于局部内部类的生命周期和局部变量声明周期不同。
(3)匿名内部类
public Interface Inner{
public void testInner();
}
public class Demo{
public static void main(String[] args){
Inner inner = new Inner() {
@Override
public void testInner() {
...
}
};
}
说明:只要是抽象类或者接口,那么其子类都可以通过匿名内部类实现。多线程的实现可以使用匿名内部类,匿名内部类的使用通常是为了省事,省掉了编写一个独立的类的“麻烦事”。
(4)静态内部类
public class Out{
static class Inner{
...
}
}
public class Demo{
public static void main(String[] args){
Out.Inner inner = new Out.Inner();
}
}
说明:静态内部类只能使用外部类的静态域,不能使用非静态域,不要将将静态内部类声明为private(虽然可以那么做)。