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 ;.我无法理解为什么会发出此错误。
答案 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
...