对Java接口的怀疑实现

sai*_*dhu 2 java

interface Device
{
  public void doIt();
}

public class Electronic implements Device
{
   public void doIt()
   {
   }
}

abstract class Phone1 extends Electronic
{
}
abstract class Phone2 extends Electronic
{
   public void doIt(int x)
   {
    }
}

class Phone3 extends Electronic implements Device
{   
    public void doStuff()
    {
     }
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我为什么这个编译..因为"Phone3"实现了Device,它应该有doIt()方法,但它没有.但这仍然是编译.我可以认识Y吗?

JB *_*zet 6

Phone3扩展Electronic,并Electronic具有doIt()实现Device接口的方法.因此,该doIt方法的实现仅从Electronic基类继承.

如果你让这个例子更加真实,那就更有意义了.更改DeviceRingable,一个ring方法.使用该方法的实现创建SimplePhone实现的基类.并创建一个被调用的子类.美丽的粉红色手机可以响,因为它只是一个粉红色的简单手机.RingableringSimplePhoneBeautifulPinkPhone