0
私はクラスParentを持ち、Parentを継承する別のクラスChildを持っています。オペレータオーバーロードのメソッドをオーバーライドする
私は親の中に演算子オーバーロードメソッドを持っています。私はそれもChildでも動作させたいと思います。しかし、私はこれを行う方法がわかりません。
public class Parent
{
public int age;
public static Parent operator + (Parent a, Parent b)
{
Parent c = new Parent();
c.age = a.age + b.age;
return c;
}
}
public class Child : Parent
{
//other fields...
}
私が考えることができる唯一の方法は、全く同じ方法とロジックを子供にコピーすることです。しかし、私は、コードが冗長であるので、それは良い方法ではないと考えている。(コードが非常に長い場合は特に)
public class Child : Parent
{
public static Child operator + (Child a, Child b)
{
Child c = new Child();
c.age = a.age + b.age;
return c;
}
}
私はキャスト実行しようとしましたが、それは実行時に失敗します。
public class Child : Parent
{
public static Child operator + (Child a, Child b)
{
return (Child)((Parent)a + (Parent)b);
}
}
がありますこれを達成するより良い方法は?どうもありがとうございました。
を呼び出して、あなたが「親A =新しい子供のような子クラスのオブジェクトを開始するために、親のタイプを使用してみましたことを、保護コンストラクタにロジックを移動するだろう(); " –
私はParentを使って起動しても、どのように(Parent + Parent)をChildに変換するのですか? – user3545752
サイドノート:この問題に直面すると、誰も親子から期待することを誰も理解できなくなり、コードを読み取ることができなくなる可能性があります。この時点で、ビルダーメソッドや別のものに行く方が良い選択肢かもしれません。 –