Access实现的类方法
本文关键字:类方法 实现 Access | 更新日期: 2023-09-27 18:26:07
我想问一个关于继承的问题。我有两个从AbsDoc 实现的类
public class A:AbsDoc
{
public void SomeMethodA()
{}
}
public class B:AbsDoc
{
public void SomeMethod()
{}
}
and one class to implement
public class AbsDoc
{
public void Doit(){};
public void DoDiff(){};
}
当我需要访问像这样的A类或B类方法时,我会出错,我该如何访问
AbsDoc temp=null;
if(param=="A)
{
temp=new A();
}
else
{
temp=new B();
}
temp.SomeMethodA();//it gets error when i try to access
temp
,正如您所定义的,它是AbsDoc
。它没有SomeMethodA
,所以您会得到一个编译器错误。这是意料之中的事。例如,再次查看您的代码:
AbsDoc temp=null;
if(param=="A")
{
temp=new A();
}
else
{
temp=new B();
}
temp.SomeMethodA();//it gets error when i try to access
如果param != "A"
会发生什么?您的temp
将是B
而不是A
,因此您不能调用SomeMethodA
。如果你想呼叫SomeMethodA
,你需要施放temp
:
AbsDoc temp=null;
if(param=="A")
{
temp=new A();
((A)temp).SomeMethodA();
}
else
{
temp=new B();
((B)temp).SomeMethod();
}
从你的评论来看,你想做的事情是这样的:
AbsDoc temp=null;
if(param=="A")
{
var a =new A();
a.SomeMethodA();
temp = a;
}
else
{
var b =new B();
v.SomeMethod();
temp = b;
}
temp.DoIt();
这样你就不需要把所有基类的东西都做两次了。