だから、私はすべてのアイテムが他のクラスを継承しているインベントリシステムをC#で作成しています。現在私はいくつかのテストクラスに取り組んでいます。そのうちの1つはフィッシュです。 Fishはアイテム(上位レベルのクラス)から継承する消耗品から継承します 注:消耗品は基本的にスタック可能なアイテムです。継承のthis()とbase()の使用
私は消耗品クラスで2つのデフォルトコンストラクタを作成したい、引数を取らない1:
public Consumable() : base() {
quantity = 1;
}
をちょうど1
そして、もう一つの引数、数量をとるものに数量を設定します:
public Consumable(int Quantity) : this() {
if (quantity <= maxStack)
quantity = Quantity;
else
quantity = maxStack;
}
作成時に数量を設定します。今私は、上記のコードでこの()を使用すると、これを独自のデフォルトの引数のないコンストラクタを使用するように強制するだろうと考えましたが、そうではないようです。これは私が魚を持っているものです。
public Fish() : base() {
name = "fish";
ID = 1;
variant = 0;
maxStack = 20;
desc = "A Fish of some kind";
rarity = ItemRarity.Common;
}
public Fish(int QTY) : base(QTY) { }
私は起こるしたいどのような私は、それは消耗品(QTY)を呼び出し、その後、基本を設定するために魚を()呼び出したい魚が(QTYをint型)が呼び出されたときに、あります量を設定することもできます。
現在しかし、ときの代わりに魚の魚(QTYをint型)、それは消耗品を(呼び出し、消耗品(QTY)を呼び出し、呼び出された)()
が、これは私はように動作するように取得する方法はあります探している?
があなたの代わりに、静的なファクトリメソッドを使用して考えられていますか? – Dai
デフォルトコンストラクタのコードを 'InitDefaults'メソッドに抽出し、両方のコンストラクタから呼び出すことができます –
静的ファクトリメソッドが何であるか分かりません – SuperMeip