Java 为什么我们需要重写父类的方法?

Java 为什么我们需要重写父类的方法?,java,Java,我的意思是,如果我们想重写子类中方法的所有内容并更改其函数,为什么我们不能用不同的名称编写一个新方法呢?有什么区别?我知道这是一个简单的问题。但我是编程新手,非常困惑。THX。这是关于为这类东西的常见功能赋予不同的行为,例如,让我们假设所有车辆都发出嘟嘟声,但汽车喇叭和轻便摩托车发出嘟嘟声 class Vehicle { public void beep() { System.out.println("Beep!"); } } class Car extends

我的意思是,如果我们想重写子类中方法的所有内容并更改其函数,为什么我们不能用不同的名称编写一个新方法呢?有什么区别?我知道这是一个简单的问题。但我是编程新手,非常困惑。THX。

这是关于为这类东西的常见功能赋予不同的行为,例如,让我们假设所有车辆都发出嘟嘟声,但汽车喇叭和轻便摩托车发出嘟嘟声

class Vehicle {

   public void beep() {
       System.out.println("Beep!");
   }

}

class Car extends Vehicle {

   @Override
   public void beep() {
       System.out.println("Honk!");   
   }

}

class Moped extends Vehicle {

   @Override
   public void beep() {
       System.out.println("Meep Meep!");       
   }

}
这就是所谓的。看看这个链接

一个简单的例子是Java集合框架。使用时,您有一个界面
列表
。您不想知道
add
size
的工作原理。它应该会起作用

但是,当您在实现端时,
ArrayList
LinkedList
在管理项目的方式(存储在其中的位置)上存在差异


当您查看超类中已经实现的方法时,您可能需要一个方法来具有不同的行为。现在假设在当前代码中有一些方法调用。如果您不想更改它们,那么您只需重写该方法,客户端就不必为了使用您的功能而更改其代码

覆盖是使用继承时可用的功能

当从另一个类扩展而来的类希望使用父类的大部分功能,并且在某些情况下希望实现特定功能时,可以使用它

class Animal{

   public void move(){
      System.out.println("Animals can move");
   }
}

class Dog extends Animal{

   public void move(){
      System.out.println("Dogs can walk and run");
   }
}

class Cat extends Animal{

}

public class TestDog{

   public static void main(String args[]){
      Animal a = new Animal(); // Animal reference and object
      Animal b = new Dog(); // Animal reference but Dog object
      Animal c = new Cat(); // Animal reference but Cat object

      a.move();// runs the method in Animal class
      b.move();//Runs the method in Dog class
      c.move();//Runs the method super method
   }
}

因此,通过使用父类,您不需要在每个扩展animal的类中定义move(),您可以在必要时覆盖它。

当您为方法提供与父类相同的签名时,您将用新的签名替换父类提供的功能。如果你给它另一个签名,它就没有了,但这并不是真正的压倒一切。它正在实施。我猜deathlee是在询问重写一个已经在超类中实现的方法。