我目前正在 Java 中学习 OOP。我遇到的一件事是,例如,我在 Vehicle SUPERCLASS 中有一个方法 speed,我想在 SUBCLASS Car 中访问该方法,我必须创建类似的方法;public void changespeed(){ super.speed();}以访问速度的方法。我的问题是,为什么我们需要附上这样的速度方法才能访问它?为什么我们不能简单地使用这种方法;super.speed();在子类中调用该速度方法。?
1 回答
紫衣仙女
TA贡献1839条经验 获得超15个赞
你可以这样做:
speed();
由于非私有的超类方法都是由子类继承的,speed也存在于子类中。您可以通过this.speed()或 仅访问它speed()。
很明显,你必须把这个方法调用放在一个合适的地方。你不能像这样随机地把它放在一个类中:
class Car extends Vehicle {
speed(); // can't do this!
}
您必须将方法调用放入另一个方法或构造函数中。这样编译器就知道何时调用该方法。
为什么方法调用必须在其他方法或构造函数中?
好吧,问问自己什么时候会调用上面代码片段中的方法调用。请记住,这speed是一个实例方法,因此Car需要一个实例来调用它。那个实例在哪里?将方法直接放在类中的整个概念毫无意义。
那么如果我想在加载类时调用一个方法呢?
您可以为此使用静态块:
static {
// do stuff here
}
请注意,您仍然不能speed直接在静态块中调用,因为您需要Caror的实例Vehicle。
添加回答
举报
0/150
提交
取消