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 

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

这样你就不需要把所有基类的东西都做两次了。