我有以下课程:
class Vehicle {
public void Move() {
System.out.println("Move");
}
}
class Bike extends Vehicle {
public void RideOnBackWheel() {}
}
class VehicleWithEngine extends Vehicle {
public void EngineStart() {}
public void EngineStop() {}
}
现在,我必须使用Bike和VehicleWithEngine中的方法创建类Motorbike,但它不起作用:
class Motorbike extends Bike, VehicleWithEngine {
private boolean engine = false;
@Override
public void EngineStart() {
engine = true;
System.out.println("Engine started.");
}
@Override
public void EngineStop() {
engine = false;
System.out.println("Engine stopped.");
}
@Override
public void RideOnBackWheel() {
if(engine) System.out.println("1 wheel");
}
@Override
public void Move() {
if(engine) System.out.println("Motorbike.move()");
}
}
感谢您的帮助。
答案 0 :(得分:4)
在java中,你不能从两个类继承。您必须使用dict
关键字将Vehicle
,Bike
和VehicleWithEngine
类更改为接口,而不是在摩托车类中使用od implements
。
extends
答案 1 :(得分:1)
看起来Bike
和VehicleWithEngine
实际上没有实现。如果是这样,您可以将它们转换为接口并Motorbike
实现两者:
interface Bike extends Vehicle {
void RideOnBackWheel();
}
interface VehicleWithEngine extends Vehicle {
void EngineStart();
void EngineStop();
}
class Motorbike implements Bike, VehicleWithEngine {
// implementations
}
如果Bike
和Vehicle
有无状态实施(他们不需要直接访问成员变量),您可以将它们转换为default methods,例如:
interface Bike extends Vehicle {
default void RideOnBackWheel() {
// implementation
}
}
否则无法从两个课程扩展。请参阅链接的副本。