0

派生クラスから単純なフィールドにアクセスできないため、フィールドの場合のポリモーフィズムの使用は何ですか。Name プロパティを取得するために ResponseMBP にダウンキャストする必要がある場合、クライアントは派生クラスについて知る必要があります。

では、ポリモーフィズムはメソッドに対してのみ機能しますか?

public abstract class Response
{
}

public class ResponseMbp : Response
{        
    public string Name = "My Name";        
}

class Program
{
    static void Main(string[] args)
    {
        Response r = new ResponseMbp();
        Console.Write(r.Name);
    }
}
4

3 に答える 3

1

まず、フィールド ポリモーフィズムでは、そのフィールドを基本クラスと派生クラスの両方で宣言する必要があります (メソッド ポリモーフィズムの場合と同様)。

あなたの例では、フィールド「名前」は派生クラスの署名の一部にすぎず、基本クラスの署名に「名前」変数がありません。このため、基本クラスのオブジェクトは、派生クラスでインスタンス化されますが、基本クラスの署名項目のみを表示します。したがって、この理由により、例では r.name を使用できません。

フィールド ポリモーフィズムの適切な使用法については、このリンクを参照してください。

于 2013-08-14T19:04:15.747 に答える