3 回答

TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個贊
Java不支持實(shí)現(xiàn)的多重繼承,但它支持接口的多重繼承。因此,您可以根據(jù)需要實(shí)現(xiàn)任意數(shù)量的接口。若要避免重復(fù)并在多個類之間共享代碼,可以使用委托。
例如:
接口:
interface IGas {
checkGas();
onLowGasEvent();
}
interface IBattery
checkBattery();
onLowBatteryEvent();
}
通用功能的實(shí)現(xiàn)
class GasImpl implements IGas {
checkGas() {
...
}
onLowGasEvent() {
...
}
}
class BatteryImpl implements IBattery {
checkBattery() {
...
}
onLowBatteryEvent() {
...
}
}
活動(注意實(shí)施設(shè)置):
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();
}
}
如果要使用 ,則應(yīng)將訂閱者保留為 Activity 接口 , 但也要將其實(shí)現(xiàn)委托給處理程序。因此,在:EventBusHybridActivity
@Subscribe(threadMode = ThreadMode.MAIN)
function onLowGasEvent(){
mGasImpl.onLowGasEvent();
}
@Subscribe(threadMode = ThreadMode.MAIN)
function onLowBatteryEvent(){
mBatteryImpl.onLowBatteryEvent();
}
如果需要,請更新接口方法以將其作為參數(shù)傳遞。onLow...EventContext
希望它有所幫助。

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個贊
正如惠什@Kristy所建議的那樣,Java不允許多重繼承...但是有接口!
只需執(zhí)行如下操作:
-創(chuàng)建兩個界面:一個用于汽油車,另一個用于電動汽車。
-您的混合動力汽車實(shí)現(xiàn)了這兩個接口,因此您擁有了所需的兩個功能。
-您的舊車類根據(jù)其類型實(shí)現(xiàn)正確的接口。
希望這有幫助或給你一些提示。
干杯
添加回答
舉報