本帖最后由 王莹 于 2012-6-22 11:44 编辑
- public class Demo2 {
-
- /**
- * @param args
- */
- public void print() {
- System.out.println(super.getClass());
- System.out.println(this.getClass());
- System.out.println("Father!");
- }
-
- static class Demo1 extends Demo2 {
- public void print() {
- System.out.println(super.getClass());
- System.out.println(this.getClass());
- System.out.println("Son!");
- }
- }
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Demo1 t1=new Demo1();//为什么提示错误
- Demo2 t2=new Demo2();
- t1.print();
- t2.print();
-
- }
- }
复制代码 因为你在Demo1中的静态main 方法中创建了Demo1类的对象,而Demo1是Demo2的内部类,外部类的静态方法访问内部类,内部类必须为静态的。此时你需要在Demo1前面加上修饰符static,就可以运行出来答案了。为了区分你的子类Demo1和父类Demo2的print方法的结果,又多添了两条语句来区分是哪个类调用的结果,运行结果如下:
|