Java 我是否需要重写在抽象类中实现的方法

Java 我是否需要重写在抽象类中实现的方法,java,Java,我有一个抽象的超类。有些方法在抽象类中实现。在我的子类中,我需要重写实现的方法。子类中的方法与超类完全相同 public abstract class vehicle { public int getNumber() { return 5; } } public class car { public int getNumber() { return super.getNumber(); } } 所以我的问题是,我是否需要重写该方法并包含一个

我有一个抽象的超类。有些方法在抽象类中实现。在我的子类中,我需要重写实现的方法。子类中的方法与超类完全相同

public abstract class vehicle {
   public int getNumber() {
      return 5;
   }
} 

public class car {
   public int getNumber() {
      return super.getNumber();
   }
} 

所以我的问题是,我是否需要重写该方法并包含一个超级调用?或者我可以把它留在超类中,而不在子类中实现它吗?

您可以把它留在超类中,而不在子类中实现它

召唤

car BMW = new car();

BMW.getNumber();
应该获取超类方法。

不,您没有。您可以将其留在超级父类中,而不实现它

原因

基本上,抽象类背后的思想非常简单,即您可以写下通用实现,所有具体类都可以从抽象类派生一次,然后不必重写它们

例如,如果所有车辆都有一个数字,这是一个公共属性,那么为从该类派生的每个类编写相同的getNumber方法就没有意义了。抽象vehicles类类似于某种“框架”,而从vehicle类派生的具体类car、bus、van就是您实例化的实际类。在这个类中,你可以有更专门的变量和方法,汽车是2轮还是4轮?卡车可能不需要这种方法

本问题的相关阅读资料:

简言之,抽象类的美妙之处在于,您不必对每一个细节都有具体的lol,但您可以对所有公共类使用一个方法,如果它们是特殊情况,则可以重写它们。这也有助于维护代码。在所有类之间共享的公共方法中,一个bug只需要在抽象类中进行更改,而不需要在所有具体类中进行更改

附加信息

与其他信息一样,如果您使用的是接口而不是抽象类,那么您必须重写其中的每个方法,因为接口不包含实现,只包含设计

您可能还想了解多态性和继承,这是所有面向对象编程OOP语言中的重要概念


注意:另外,由于我不能对你的问题发表评论,我还没有足够的代表性,但已经潜伏了足够长的时间,不要被否决票气馁,这里的许多人认为你也有正确的关键字在StackOverflow上搜索以获得你想要的答案,但情况并非总是如此。祝你好运

没有,但你确实需要合上牙套:你试过了吗?或者阅读一些关于抽象类的基本文档?为什么不直接测试代码并亲自查看呢?为什么会有这么多的反对票?提问者可能对Java不太了解,但我不认为这个问题本身有那么糟糕。@Dolda2000我怀疑这些否决票并不是因为提出了糟糕的问题,而是因为没有显示出研究成果。在问任何问题之前,每个程序员(不仅仅是程序员)应该做的第一件事是自己寻找答案,就像编写一个简单的测试用例,类似于立即给出答案的测试用例。即使OP没有安装运行时,也有很多类似的在线IDE。