0

クラスがあります:

    class A
    {

    }

    class B:A
    {
      public void metod(){}
    }

    static class C
    {
        static void met(B clas)
        {
            A test = clas as B;
            // is it any way to get method "metod " from B via test?
        }
    }

これはナンセンスに見えることは知っていますが、考え方は正しいです。CクラスでBオブジェクトを作成することはできません。

4

4 に答える 4

1

子はを介して親にアクセスできますbase。例えば

base.SomeMethod();

継承するとき、子は親が誰であるかを知っており、その親クラスがベースになるためです

childしかし、baseはどのクラスがそれを継承するかを知らないため、のようなキーワードはありません。

子は単一の親を持つことができますが、親は1つ以上の子を持つことができます。

于 2012-08-14T14:13:17.567 に答える
1

あなたはそれをこのように元に戻す必要があり、あなたがアクセスできるよりも

Base derivedInstance = new Derived();
Derived child= (Derived)derivedInstance; 
child.Callmethod();

要するに

   A test = clas as B;
   ((B)test).method();
于 2012-08-14T14:13:44.443 に答える
0

テストをBにキャストするか、最初にBとして宣言された変数を使用することができます。

((B)test).metod();

また

clas.metod();
于 2012-08-14T14:12:47.843 に答える
0
 class A
    {
      public virtual void method(){}
    }
    class B:A
    {
      public override void method(){}
    }
 and 
    static class C
    {
    static void met(B clas)
      {
        A test = clas as B;
        test.method(); //this may be what you want?
       }
    }
于 2012-08-14T14:14:26.003 に答える