抽象和静态的问题
如何在我的抽象类(AAbstract)中声明Function2? Function2不能是抽象的和静态的。 我该怎么办?
interface IInterface
{
void Function2();
}
public abstract class AAbstract : IInterface
{
//need to be static
public static void Function1()
{
Function2();
Function3();
}
private static void Function3()
{
//do something private
}
}
public class myClass1 : AAbstract
{
private static void Function2()
{
//do something private, specific to this class
}
}
public class myClass2 : AAbstract
{
private static void Function2()
{
//do something private, specific to this class
}
}
我称之为:
myClass2.Function1();
或
myClass1.Function1();
只能这样调用它。除了这个功能,一切都是私密的。
答案 0 :(得分:0)
您永远无法从静态Function1内部调用子/具体类中的非静态函数Function2!
如果你需要在具体/子类的实例中传递它,你可以这样做:
public static void Function1(IInterface someInstance)
{
someInstance.Function2();
Function3();
}
然后你会从具体的类中调用它:
AAbstract.Function1(this);
甚至就是这样:
Function1(this);
答案 1 :(得分:0)
我想念你的代码,当你第一次发布时,在具体类静态中是function2吗?我对您的界面声明感到困惑。我不认为你的代码会编译,因为AAbstract需要提供Function2的实现。
如果您试图覆盖myClass1和myClass2中的function2的实现(并履行IInterface合约),则无法使用静态方法执行此操作。
您是否只是尝试从共同基础设置继承?