1. 成员内部类
在类内的类,访问权限一般设置为private,防止外界直接访问
内部类可以访问外部类成员,包括私有
外部类访问内部类,需要先创建内部类对象
public class Outer { private int i=1; public void funOut(){ Inner1 inner1=new Inner1();//外部类访问内部类,需要创建其对象 inner1.funIn(); } private class Inner1{ //内部类一般设置为私有,不让外界直接访问 public void funIn(){ System.out.println("成员内部类"+i);//内部类可以直接访问外部类的成员,包括私有 } } } Outer outer=new Outer(); outer.funOut();
2. 局部内部类
局部内部类写在方法内部,外界无法直接访问
public class Outer { private int i=1; public void fun1(){ class Inner2{ //方法内的内部类,外界无法直接访问 public void funIn(){ System.out.println("局部内部类"+i); } } //调用 Inner2 inner2=new Inner2(); inner2.funIn(); } } Outer outer=new Outer(); outer.fun1();
3. 匿名内部类
匿名内部类:实现了该接口(或继承了该类的子类匿名对象)
前提:有一个接口或一个类(类多为抽象类)
public interface InterShow { int j=0; void show(); } public static void main(String[] args) { //匿名内部类:多态形式创建对象 InterShow interShow=new InterShow(){ @Override public void show() { System.out.println("匿名内部类"+j); } }; //输出 interShow.show(); }