用相同的方法实现多个接口


问题内容

此代码完美地工作。方法test()适用于两个接口。幕后到底发生了什么?在实际情况下,此功能有何用处?

interface A
{
    void test();
}

interface B 
{
    void test();
}

class C implements A, B
{

    public void test() 
    {
        System.out.println("abc");
    }
}

   A a = new C();
   a.test();
   B b = new C();
   b.test();

问题答案:

因为它是一个接口,所以不会造成任何危害。C通过实现A和,您基本上是在为您的课程使用蓝图B。双方AB说,C应实施一个名为方法test()

您的C类实现了该方法,因此接口已完成其工作。

基本上,您的C班级在说:“哦,我需要test()因为接口A而实现”,然后您就实现了。然后您的C班级说:“哦,嘿,test()由于接口我需要再次实现B”,它看到已经有一个称为test()Implemented
的方法,因此很满意。

您还可以在这里找到更多信息:JLS§8.4.8.4