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)作者: xieshuhua 时间: 2012-5-26 08:47
哥们,你这段代码问题太多了,留下一句都会报错。。。
①先回答你的前面两个问题:
匿名内部类,就是以后都不会用的类所以不用起名字,当然你可以把他看做局部类。
静态方法 和所有静态的东西,里面都不能有非静态成员。就如同贴个男生宿舍的标签,里面不能有女生,对吧。
②是不是成员内部类不能继承其他类?------能。 如下代码所示。
class Person {
public String name = "lisi";
public int age = 40;
}
class Student {
class Head extends Person {
/*Head h = new Head();//这里运行会报错 为什么? 是不是成员内部类不能继承其他类?*/
}
}
public class cw{
public static void main(String[] str ){
Student s1=new Student();
Head h1=s1.new Head();
System.out.println(h1.age);
}
}
复制代码
你这个new Head 是个死循环啊。。。
希望能够帮到你~~~ 作者: 徐炯 时间: 2012-5-26 09:31
对2楼的回答进行补充: