java内部类,可以分3类,1是成员内部类,2是方法内部类,3是静态内部类。每一类都有自己的特点,总结如下:
第1类,和普通的类差不多,但不能定义静态成员变量和方法,编译后会带上外部类的类名。
第2类,和方法平级,可以访问方法的参数和局部变量,但必须定义为final类型,这个主要是由于作用域的区别,因为方法退出之后,参数和局部变量就不存在了,但是内部类对象
不会立马删除,所以这些参数和局部变量必须定义为final类型。另外,它也不能定义静态成员变量和方法。
第3类,可以定义静态方法和属性,也可以定义非静态方法和属性,可以访问外部类的静态熟悉,但是不能访问非静态熟悉。
主要的实例代码如下:
package com.basic.innerclass;
public class BasicInnerClass {
private String var;
private static String tt;
public BasicInnerClass(String var) {
this.var = var;
}
public static void main(String argv[]) {
BasicInnerClass bsc = new BasicInnerClass("BasicInnerClass");
bsc.test("parameter");
b x = bsc.new b();
b y = bsc.getInner();
c z = new BasicInnerClass.c();
x.print();
y.print();
z.print();
return;
}
public void test(final String str) {
final String s = "varibility";
class a {
private int xx;
public void print() {
System.out.println(s);
System.out.println(str);
System.out.println(var);
}
}
new a().print();
}
public b getInner() {
return new b();
}
public class b {
private String tmp;
public void print() {
System.out.println(tmp);
System.out.println(var);
}
}
static public class c {
private static String tmp = "static";
public static void test() {
System.out.println(tt);
}
public void print() {
System.out.println(tmp);
System.out.println(tt);
}
}
}