内部类访问私有信息方便
1、成员内部类访问:先 外部类对象 后内部类对象 可以访问外部类一切信息
2、静态内部类,只能访问外部类静态信息
public class InnerDemo01 { public static void main(String[] args) { //先有外部类再有内部类 //1:外部类 Outter outter = new Outter(); //2:内部类 Outter.Inner inner =outter.new Inner(); inner.test("jaky"); //外部类只使用一次,可以使用匿名对象 Outter.Inner inner2 =new Outter().new Inner(); //静态内部类 Outter.Inner2 inner3 =new Outter.Inner2(); } } class Outter { private static int age; // 成员内部类 class Inner { private String name; public void test(String name) { System.out.println(name); } } // 静态内部类 只能静态信息 static class Inner2 { private String name; public void test(String name) { System.out.println(age + "-->" + name + "-->" + this.name); } } }
3.成员内部类,方法内部类和匿名内部类详解
public class InnerDemo02 { public static void main(String[] args) { App app= new App(); app.test(); app.test2(); app.test3(); } } // 接口: 公共抽象方法+全局常量 abstract interface Door { public abstract void open(); public static final int MAX_VALUE = 1; } // 有名称的实现类 class TurnDoor implements Door { public void open() { System.out.println("旋转门"); } } class App { public void test() { new TurnDoor().open(); } // 由于TurnDoor类在App类中只用到一次,所以使用方法内部类 // 方法内部类 public void test2() { class AlarmDoor implements Door { @Override public void open() { System.out.println("报警门"); } } new AlarmDoor().open(); } // 由于AlarmDoor在test2()方法中只用到一次,所以使用匿名内部类 // 匿名内部类(重点) public void test3() { Door d =new Door(){ @Override public void open() { System.out.println("防盗门"); } //新增 public void add(){ System.out.println("======"); } }; d.open(); //匿名内部类新增方法不能用,如d.add()报错; } }