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();

因为当继承孩子知道谁是父母并且父类成为基础

但是没有关键字 likechild因为 base 不知道哪个类会继承它。

一个孩子可以有一个单亲,但一个父母可以有一个或多个孩子。

于 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

您可以将 test 转换为 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 回答