使用 @override 和不使用接口有什么区别?

What is the difference between using @override and not using it with interfaces?

这是我的界面。

public interface ConnectionListener{
    public void onConnectionReady();
    public void onConnectionDown();
}

我在 HomeActivity 中实现了这个接口 class.I 想了解在实现的方法中使用 @Override 和不使用 @Override 注释有什么区别...

public class HomeActivity implements  ConnectionListener
 {

     @Override
      public void onConnectionReady() {

    }


     @Override
    public void onConnectionDown() {

    }
}

@Override 仅向编译器显示您要覆盖某个方法。如果方法签名在 super class 或实现的接口中未知,则会出现编译时错误。

在运行时没有区别。

有关详细信息,请参阅 javadoc

如果你有 class B 扩展 class A(B 扩展 A),你可以使用 @Override 来 "replace" 一些方法。您可以修改方法在 class B 中的工作方式,而无需在 class A 中替换它。在覆盖方法中,您也可以使用 "super" 方法从 class A 调用方法并修改方法超级使用后它将起作用。在生活中,您可以使用 class 动物来扩展 class 狗和猫。如果 Animal class 有方法 getSound() ,您可以为 Dog 覆盖它以获取狗的声音,为 Cat 覆盖它以获取猫的声音。但是 Dog 和 Cat 将拥有所有具有动物腿或 body.

其他部分的人工制品

当您尝试标准化某些组时可以使用的接口class会有相同的方法名称,但在接口中您没有实现方法的代码。

您可以在此处阅读更多相关信息: Implements vs extends: When to use? What's the difference?

您会发现 @Override 标记在继承过程中与静态方法一起使用时的最佳用法。 假设 class A 有一个静态方法 EAT,class B 扩展了 class A 并在 class B 中创建了一个静态方法 EAT。现在 class A 和 B 都具有具有不同实现的静态方法 EAT 但未被覆盖,当您尝试使用 @Override 标记它时,它会向您显示一个错误,这意味着 sub-class 具有相同的签名和不同的实现但未被覆盖。