无法理解代码中的错误

时间:2016-01-25 17:45:21

标签: java

public abstract class demo {
demo()
{

}
public void display(){System.out.println("this is from abstract class");}
public static void main(String[] args) {
    // TODO Auto-generated method stub

    demo s=new demo(){
        public void display(){System.out.println("this is demo constructor");}
    }; 
    s.display();

}

}

在上面的代码中,我试图创建一个扩展演示类并覆盖显示函数的匿名类,但是我收到了一些错误。上面的代码在第一行给出了一个错误"类型演示已经是定义&#34 ;.我无法理解为什么会发出此错误。

2 个答案:

答案 0 :(得分:0)

这是一个名字冲突;在同一个包中具有相同名称的两个类。我建议添加一个包名来删除文件开头的名称冲突(在任何导入之前):

package com.test.demo

答案 1 :(得分:0)

您的代码工作正常。我想问题是你已经在同一个包中的某个地方定义了一个demo类(这里是我猜的默认类,这不是一个好习惯)。

此外,Java遵循一些约定。例如,类名应以大写开头。这是您的代码的正确版本:

public abstract class Demo{

    public Demo(){}


    public void display(){
        System.out.println( "this is from abstract class" );
    }


    public static void main( String[] args ){
        Demo s = new Demo(){
            public void display(){
                System.out.println( "this is demo constructor" );
            }
        };
        s.display();
    }
}

另外,此处abstract关键字不是必需的。普通班级会产生同样的效果。 abstract只是阻止任何人实例化对象Demo ...