内部类(Inner Class),内部类共分为4种。
1.静态内部类(static inner class):只能访问外部类的静态成员变量与静态方法,生成
静态内部类对象的方式为:
OuterClass.InnerClass inner = new OuterClass.InnerClass();
2.成员内部类(member inner class):可以访问外部类的静态与非静态的方法与成员变
量。生成成员内部类对象的方式为:
OuterClass.InnerClass inner = new OuterClass().new InnerClass();
若想在局部内部类中访问外部类的成员变量,语法为:OuterClass.this.a;
3.局部内部类(Local Inner Class):定义在方法当中,只能访问方法中声明的final类型
的变量。
4.匿名内部类(Anonymous Inner Class):没有类名称的局部内部类;匿名内部类会隐式地继承一个父类或实现一个接口。
?
静态内部类和成员内部类比较简单在此就不举例了。
局部内部类代码示例:
package com.lfl.innerclass; class LocalInner { private int a = 3; public void doSomething() { final int i = 5; class Inner3 { public void test() { System.out.println(i); System.out.println(a); go(); } } new Inner3().test(); } public static void go() { System.out.println("hello"); } } public class LocalInnerClassTest { public static void main(String[] args) { LocalInner inner = new LocalInner(); inner.doSomething(); } }
?
?
匿名内部类代码示例:
package com.lfl.innerclass; import java.util.Date; public class AnonymousInnerClassTest { public String get(Date date) { return date.toLocaleString(); } public Object getObject() { return new Object() { public String toString() { System.out.println("hello world2"); return "hello"; } }; } public static void main(String[] args) { AnonymousInnerClassTest inner = new AnonymousInnerClassTest(); // non anonymous innerclass String date = inner.get(new Date()); System.out.println(date); //anonymous innerclass String str = inner.get(new Date() { public String toLocaleString() { return "hello world"; } }); System.out.println(str); Object obj = inner.getObject(); String s = obj.toString(); System.out.println(s); } }
?
?
?
?
?
?
?