なぜ抽象クラスで 'this'を使用できるのか、私は少し混乱しています。抽象クラスの 'this'キーワード
私は非常に単純なオブジェクト指向のロールプレイングゲームを作っています。私はItems
と呼ばれるベース/スーパークラスを持っています。私は、次に、2つのタイプのアイテムを持っています。
interface IEquiptable
{
void equiptItem(Player p);
void unequiptItem(Player p);
}
テキスタイルアイテムのインターフェイスです。
次に、私はWeapons
と呼ばれる抽象クラスを持っている:
abstract class Weapons : Items, IEquiptable
{
public double powerOfWeapon { get; set; }
public double powerNeededToUse { get; set; }
public void equiptItem(Player p)
{
Console.WriteLine(this);
p.weapon = this;
}
public void unequiptItem(Player p)
{
//UNTESTED METHOD
p.weapon = new Swords("Fists", 1, 1);
}
}
これはItems
の基本クラスを拡張する(このクラスは瞬間だけでアイテムの名前が含まれているので、ショー価値がない)とを実装しますインタフェース 'IEquiptable'。
最後に、私はSwords
class Swords : Weapons
{
public Swords(string name, double powerOfS, double powerToU)
{
base.name = name;
powerOfWeapon = powerOfS;
powerNeededToUse = powerToU;
}
}
と呼ばれるクラスは、これは武器を拡張し、剣のコンストラクタを提供しています。この作品、なぜ私は理解していない
public void equiptWeapon()
{
Weapons tempWep = items.OfType<Weapons>().FirstOrDefault();
if (tempWep != null)
{
tempWep.equiptItem(this);
}
}
(私のプレイヤークラスで):
は、ここに私のPlayer
クラス
class Player
{
public string Name { get; set; }
public double life { get; set; }
public double power { get; set; }
public Weapons weapon { get; set; } // Currently held weapon
private List<Items> items; //This is being used to represent a 'backpack' any item obtained will be added here.
のいくつかは、私はこの方法を使用していた武器をeqiptするためです。リスト内の最初のWeaponの値がtempWepに与えられています。しかし、抽象クラスで実装されているメソッドequiptItem()
を呼び出すと、 'this'が割り当てられています。初期化されていないためにエラーが発生しないようにします。Weapons
私が何を意味するのか理解する。
ありがとうございました。
武器は装備していません。 'Person'には' Equip'メソッドが必要です。それにかかわらず、抽象クラスは、それを直接インスタンス化することはできませんが、結局オブジェクトを表します。したがって、「this」です。 – SimpleVar
あなたがここでやっていることは、武器を装備するように兵士に指示することです。武器にその武器を装備するように指示することによって武器を装備すると、武器は実際に人間に備わっています。それはピンポンです。 – SimpleVar
おそらくこれが役に立ちます。精神的に "this"を使用するすべてのメソッドが* static *メソッドであると想像してください。そのメソッドに '_this'という仮パラメータを追加します。精神的に 'すべて 'これを' _'で置き換えてください。プロパティについては、静的メソッドであると仮定します。static int get_Color(Shape _this){return _this.color; } 'と同様にセッターのために。すべての方法が静的で誰も「this」を使用しない世界では、異論はありますか? *それは基本的にどのように動作するのか*。 'this'は秘密の仮引数があるという慣例に過ぎません。 –