現在Unity C#でコードを書いています
抽象クラスの持っている関数の中で、抽象メソッド(abstract がついている関数)を呼び出す場合
メソッドが未定義でエラーになるようなのですが
以下のような、特定の処理の部分だけを抽象化したい場合って、どのように記述するものなんでしょうか?
とりあえずvirtualを使って、デフォルトを無理やり作るしかないのでしょうか?
C#
1abstract class BaseShopRegister{ 2 protected abstract uint CalcTax(uint cost); 3 public void CalcCost(uint cost){ 4 return CalcTax(cost); // ここでエラー. 5 } 6} 7 8class ShopRegister_Old : BaseShopRegister{ 9 protected override uint CalcTax(uint cost){ 10 return cost * 1.05f; 11 } 12} 13 14class ShopRegister_New : BaseShopRegister{ 15 protected override uint CalcTax(uint cost){ 16 return cost * 1.10f; 17 } 18}
virtual版.
C#
1class BaseShopRegister{ 2 protected virtual uint CalcTax(uint cost){ 3 return cost; // 無理やりデフォルト処理を作る?. 4 } 5 public void CalcCost(uint cost){ 6 return CalcTax(cost); 7 } 8}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。