内部类分为四种:
1.成员内部类
2.局部内部类
3.静态内部类
4.匿名内部类
1.成员内部类
2.局部内部类
3.静态内部类
4.匿名内部类
1.成员内部类
Java code
2.静态内部类
Java code
3.局部内部类
Java code
Java code
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> // 成员内部类......相当于非静态方法 class MemberInner { private int a = 3; public class Inner2 { private int a = 2; public void doSomething() { // 调用外部类的属性 System.out.println(MemberInner. this.a); // 这块要注意......很重要!!! System.out.println(a); } } } public class Test3 { public static void main(String[] args) { MemberInner.Inner2 inner2 = new MemberInner(). new Inner2(); // 非静态内部类要new实例 inner2.doSomething(); } }
2.静态内部类
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> // 静态内部类......相当于静态方法 class StaticInner{ private static int a=3; public static class Inner{ public void test(){ System.out.println(a); } } } public class Test2 { public static void main(String[] args) { StaticInner.Inner inner= new StaticInner.Inner(); // 静态内部类直接调用 inner.test(); } }
3.局部内部类
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> //局部内部类......相当于局部变量 class LocalInner { public void doSomething(int b) { final int a = 3;// 只能访问final的变量 class Inner3 { public void test(int b) { System.out.println(b); System.out.println(a); } } new Inner3().test(b); } } public class Test4 { public static void main(String[] args) { LocalInner inner = new LocalInner(); inner.doSomething(4); } }