多态是否允许在子类中重写其超类的所有方法?

问题描述 投票:0回答:2

请举例说明!

但是,子类并不强制覆盖超类中的所有方法。 它提供了覆盖方法的选项,但这不是必需的。

多态性允许子类为其超类中定义的方法提供特定的实现。这意味着您可以在超类中拥有一个不会在子类中重写的方法。在这种情况下,子类将继承并使用超类的实现。 如有错误请指正!

java oop polymorphism
2个回答
1
投票

你是对的,子类并不强制覆盖超类中的所有方法。它是可选的,取决于子类的设计和功能。多态性允许子类为其超类中定义的方法提供特定的实现,但并不强制子类这样做。如果子类没有重写方法,它将默认继承并使用超类的实现。

例如,假设我们有一个名为 Animal 的超类,它有一个名为 makeSound() 的方法,可以打印“动物发出声音”。我们可以创建一个名为 Dog 的子类来重写此方法并打印“狗吠”。我们还可以创建另一个名为 Cat 的子类,它不重写此方法并继承自 Animal。如果我们创建这些子类的对象并调用它们的 makeSound() 方法,我们将得到不同的输出:

// Create an object of Dog class
Dog dog = new Dog();

// Call the makeSound() method of Dog class
dog.makeSound(); // The dog barks

// Create an object of Cat class
Cat cat = new Cat();

// Call the makeSound() method of Cat class
cat.makeSound(); // The animal makes a sound

如您所见,Dog 类为 makeSound() 方法提供了特定的实现,而 Cat 类则使用 Animal 类的通用实现。这是Java中多态性和继承的一个例子。


0
投票

这是特定于语言的。在 Java 中,方法默认是“可重写的”,因此除非另有声明,否则子类可以重写所有方法。

但是,您可以将方法声明为 Final,在这种情况下 它们不能被子类覆盖

其他语言的工作方式有所不同。例如,在 C# 中,您必须使用 virtual 关键字显式声明方法。除非你这样做,否则子类无法覆盖它。

© www.soinside.com 2019 - 2024. All rights reserved.