我们有课程:
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对象。
答案 0 :(得分:1)
儿童可以通过base
访问父母。例如,
base.SomeMethod();
因为继承子时知道父母是谁,父类成为基础
但没有像child
这样的关键字,因为base不知道哪个类会继承它。
孩子可以有单亲,但父母可以有一个或多个孩子。
答案 1 :(得分:1)
你需要像这样转换它,而不是你可以访问
Base derivedInstance = new Derived();
Derived child= (Derived)derivedInstance;
child.Callmethod();
简而言之
A test = clas as B;
((B)test).method();
答案 2 :(得分:0)
您可以将测试转换为B,或者只是首先使用声明为B的变量:
((B)test).metod();
或
clas.metod();
答案 3 :(得分: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?
}
}