gpt4 book ai didi

java - 什么都不做的抽象方法实现

转载 作者:行者123 更新时间:2023-12-01 00:06:52 24 4
gpt4 key购买 nike

我不太确定如何措辞这个问题,但希望这个例子能让它更清楚一点。我正在尝试找出不调用已实现的抽象方法之一的最佳方法(什么都不做),我很好奇我目前的方法是否完全正确。

abstract class Vehicle {
void doSomething() {
if (this.getClass() instanceof Chevy) {
operateOnCar();
}
}
abstract void operateOnCar();
}

class Chevy extends Vehicle {
@Override
void operateOnCar() {
print("Doing something to a car")
}
}

class HarleyDavidson extends Vehicle {
@Override
void operateOnCar() {
throw Exception("This isn't a car")
}
}

我能想到的另一种方法是让 HarleyDavidson 类实现 operateOnCar() 但绝对什么都不做 - 即一个空的方法体。这可能更好吗?也许这些都不是可行的例子,我应该重新考虑我的设计。谢谢!

编辑:试图让我的例子更清楚一点

最佳答案

I'm trying to figure out the best way to have one of the implemented abstract methods not be called (do nothing)

断言一个方法不应该被调用与断言它什么都不做是完全不同的。此外,在父类(super class)上定义一个方法是错误的,无论抽象性如何,都不能调用任何子类的任何实例。因此,“什么都不做”替代方案的一些变体是更好的选择。

当一个方法甚至不需要提供返回值时什么都不做有什么难的?这是一个什么都不做的方法:

void isCar() {
// empty
}

此时我还应该观察到,大多数 Java 程序员都期望名为 isCar 的方法返回一个 boolean 指示调用它的对象是否为“汽车”,无论在上下文中是什么意思。这样的方法被声明为不返回任何东西会让人感到惊讶,而它写入 System.out 可能会更加令人惊讶。

关于java - 什么都不做的抽象方法实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51973680/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com