0

いくつかの汎用コードを実行し、多くのクラスに共通する変数を初期化したいと考えています。このすべての作業を基本クラスで行うのは理にかなっています。作成したデータに基づいて、特定の関数に固有のコードを実行したいと考えています。これらの関数は、基本クラスから派生したクラスにある必要があると思います。ただし、基本クラスで初期化されたデータにもアクセスできるようにしたいと考えています。

このようなもの:

class Animal
{
    public Animal()
    {
        public int _earCount = 2;
        // determine if the planet is all water or all land
    }
}

class Dog : Animal
{
    public WagEars()
    {
    // for each ear, execute code to wag it
    }
}

class Whale : Animal
{
    public FlipTail()
    {
    // code to flip
    }
}

public main()
{
    Animal fred = new Animal;
    // what code goes here to invoke WagEars if the planet is all land?
}

基本的に、私がやろうとしているのは、中間にいくつかの派生クラス固有のコードを含むすべてのオブジェクトに対して共通のヘッダー/フッター タイプのコードを実行することです。

fred が作成されたとき、それが犬になるかクジラになるかは、共通コードが実行されるまでわかりません。

4

2 に答える 2

0

おそらくあなたが望むのは次のようなものです:

public main()
{
    Dog fred = new Dog();
    fred.WagEars();
}

サブクラスのメソッドを呼び出すには、変数の型をそのクラスとして宣言する必要があります。

または、次のようなこともできます。

public main()
{
    Animal fred = new Dog();
    ((Dog)fred).WagEars();
}

オブジェクトを正しいサブクラスにダウンキャストすると、サブクラスのメソッドにアクセスできるようになります。

于 2012-08-31T17:29:55.243 に答える
0

これは機能しますか?

if(fred is Dog)
{
  ((Dog)fred).WagEars();
}

if(fred is Whale)
{
  ((Whale)fred).FlipTail();
}
于 2012-08-31T17:54:11.890 に答える