interface A
{
void print();
}
class A implements A
{
public void print()
{
System.out.println("Hello");
}
public static void main(String args[])
{
A a=new A();
a.print();
}
}
当我使用此代码时,它会说“重复的类:A”。为什么这样?我可以没有相同的类和接口名称
答案 0 :(得分:5)
您不能拥有一个具有相同名称的类和接口,因为Java语言不允许它。
首先,它含糊不清。如果你声明一个这样的变量:
A a;
该变量的类型是什么?它是类还是界面?
其次,编译的Java代码存储在以文件中定义的类或接口命名的.class
文件中。名为A
的接口和名为A
的类都将编译为名为A.class
的文件。您不能在同一文件夹中拥有两个具有相同名称的文件。
错误消息显示“重复类”,因为Java内部将接口视为一种特殊的类。
答案 1 :(得分:2)
类和接口的完全限定名称仅包名称和类/接口名称。
因此,如果您的包名称为com.foo.bar
,则接口和类名称均为:com.foo.bar.A
在不同的套餐中,您当然可以使用相同的名称。