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