我的班級中有以下方法:
public double ComputeCost()
{
double Cost = 0;
foreach (GenericTask Task in this.GenericTasks){
Cost = Task.Compute();
}
return Cost;
}
問題是,該Compute方法僅在派生類從實作GenericTask例如EngineeringTask和DevelopmentTask因此上述代碼不編譯。
我怎樣才能達到我想要的?我是 C# 新手,不知道實作這一目標的“干凈方式”?我是否應該實作一個虛擬Compute方法,GenericTasks盡管它永遠不會計算任何東西,因為它缺乏正確的資料?
uj5u.com熱心網友回復:
在基類中創建一個抽象方法并讓派生類覆寫該方法。
基類:
public abstract double Compute();
派生類:
public override double Compute()
{
/* your class-specific implementation */
}
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/override
https://en.wikipedia.org/wiki/Virtual_function
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/367559.html
