Java类和接口名称冲突

时间:2017-04-02 05:26:58

标签: java class interface

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”。为什么这样?我可以没有相同的类和接口名称

2 个答案:

答案 0 :(得分:5)

您不能拥有一个具有相同名称的类和接口,因为Java语言不允许它。

首先,它含糊不清。如果你声明一个这样的变量:

A a;

该变量的类型是什么?它是类还是界面?

其次,编译的Java代码存储在以文件中定义的类或接口命名的.class文件中。名为A的接口和名为A的类都将编译为名为A.class的文件。您不能在同一文件夹中拥有两个具有相同名称的文件。

错误消息显示“重复类”,因为Java内部将接口视为一种特殊的类。

答案 1 :(得分:2)

类和接口的完全限定名称仅包名称和类/接口名称。

因此,如果您的包名称为com.foo.bar,则接口和类名称均为:com.foo.bar.A

在不同的套餐中,您当然可以使用相同的名称。