本帖最后由 黄克帅 于 2012-6-11 13:31 编辑
1 匿名内部类是否一定是局部内部类?
2 为什么在静态方法中不能new 非静态的内部类?
public class Person {
public String name = "lisi";
public int age = 40;
}
public class Student {
private int age=20;
class Head extends Person {
Head h = new Head();//这里运行会报错 为什么? 是不是成员内部类不能继承其他类?
String name = h.name;
public void thinking() {
System.out.println(name);
}
}
static class Body {
// Head h = new Head(); new非静态内部会报错
Person p = new Person(); // new 其他非静态内部类完全没有问题
int nianling = p.age;
public void write() {
System.out.println(nianling);
}
}
public void doSomething() {
// 匿名内部类定义在外面会报错 为什么? 是不是成员内部类不能继承其他类?
new Person() {
};
}
}
public class Test {
public static void main(String[] args) {
Student.Body stb = new Student.Body();
stb.write();
Student.Head sth = new Student().new Head();
sth.thinking();
}
}
输出结果
40
Exception in thread "main" java.lang.StackOverflowError
at duotai.Student$Head.<init>(Student.java:8) |