3 回答
TA贡献1995条经验 获得超2个赞
Java不支持实现的多重继承,但它支持接口的多重继承。因此,您可以根据需要实现任意数量的接口。若要避免重复并在多个类之间共享代码,可以使用委托。
例如:
接口:
interface IGas {
checkGas();
onLowGasEvent();
}
interface IBattery
checkBattery();
onLowBatteryEvent();
}
通用功能的实现
class GasImpl implements IGas {
checkGas() {
...
}
onLowGasEvent() {
...
}
}
class BatteryImpl implements IBattery {
checkBattery() {
...
}
onLowBatteryEvent() {
...
}
}
活动(注意实施设置):
class GasCar extends Car implements IGas {
IGas mGasImpl = new GasImpl(); // create it in your own code, or inject to inverse dependencies, etc.
checkGas() {
mGasImpl.checkGas();
}
onLowGasEvent() {
mGasImpl.onLowGasEvent();
}
}
class BatteryCar extends Car implements IBattery {
IBattery mBatteryImpl;
checkBattery() {
mBatteryImpl.checkGas();
}
onLowBatteryEvent() {
mBatteryImpl.onLowBatteryEvent();
}
}
然后你的将是这样的:HybridCar
class HybridCar extends Car implements IGas {
IGas mGasImpl;
IBattery mBatteryImpl;
checkGas() {
mGasImpl.checkGas();
}
checkBattery() {
mBatteryImpl.checkBattery();
}
}
如果要使用 ,则应将订阅者保留为 Activity 接口 , 但也要将其实现委托给处理程序。因此,在:EventBusHybridActivity
@Subscribe(threadMode = ThreadMode.MAIN)
function onLowGasEvent(){
mGasImpl.onLowGasEvent();
}
@Subscribe(threadMode = ThreadMode.MAIN)
function onLowBatteryEvent(){
mBatteryImpl.onLowBatteryEvent();
}
如果需要,请更新接口方法以将其作为参数传递。onLow...EventContext
希望它有所帮助。
TA贡献1794条经验 获得超8个赞
正如惠什@Kristy所建议的那样,Java不允许多重继承...但是有接口!
只需执行如下操作:
-创建两个界面:一个用于汽油车,另一个用于电动汽车。
-您的混合动力汽车实现了这两个接口,因此您拥有了所需的两个功能。
-您的旧车类根据其类型实现正确的接口。
希望这有帮助或给你一些提示。
干杯
添加回答
举报