使用 @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 具有相同的签名和不同的实现但未被覆盖。
这是我的界面。
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 具有相同的签名和不同的实现但未被覆盖。