爲什麼接口不能實現這樣的方法?C#爲什麼接口不能實現這樣的方法?什麼是解決我的問題的解決方法?
public interface ITargetableUnit {
//Returns whether the object of a class that implements this interface is targetable
bool unitCanBeTargeted(){
bool targetable = false;
if(this is Insect){
targetable = (this as Insect).isFasterThanLight();
}
else if(this is FighterJet){
targetable = !(this as FighterJet).Flying;
}
else if(this is Zombie){
targetable = !(this as Zombie).Invisible;
}
return targetable;
}
}
昆蟲,和殭屍都已經從基類派生生物和FighterJet從類機派生然而,並非所有的生物-S是靶向,不使用ITargetableUnit inteface。
有沒有解決我面臨的問題的解決方法?
接口沒有行爲,你要找的是抽象類 – Uriil
因爲接口不允許你提供實現。取而代之的是像這樣的結構,'Creature' - >'TargetableCreature' - >'Insect' /'Ghost' /'Zombie'和'Creature' - >'NonTargetableCreature' - >'WhateverIsntTargetable'然而,因爲你的界面有不同的每種類型的實現,你應該在每個類中實現接口。 – dman2306
你應該只需要一個'ITargetableCreature'和'INonTargetableCreature',然後檢查主要方法中的任何一個。 –