C# 抽象和静态函数的替换
抽象与静态问题 如何在抽象类(AAbstract)中声明Function2? 函数2不能是抽象的和静态的。 我能做什么C# 抽象和静态函数的替换,c#,static,abstract,C#,Static,Abstract,抽象与静态问题 如何在抽象类(AAbstract)中声明Function2? 函数2不能是抽象的和静态的。 我能做什么 interface IInterface { void Function2(); } public abstract class AAbstract : IInterface { //need to be static public static void Function1() { 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();
或
只能这样叫。除此函数外,所有函数都是私有的。您永远无法从静态函数1内部调用子/具体类中的非静态函数Function2 如果您需要在混凝土/子类的实例中传递它,您可以这样做:
public static void Function1(IInterface someInstance)
{
someInstance.Function2();
Function3();
}
然后你可以这样从混凝土类中调用它:
AAbstract.Function1(this);
Function1(this);
甚至像这样:
AAbstract.Function1(this);
Function1(this);
我想读你的代码,当你第一次发布时,具体类中的function2是静态的吗?我被你的接口声明弄糊涂了。我认为您的代码不会编译,因为Abstract需要提供Function2的实现 如果您试图覆盖myClass1和myClass2中function2的实现(并实现IInterface约定),那么静态方法就无法做到这一点
您只是想从一个公共基础上建立继承吗?从技术上讲,传递接口工作/构建。我想要它做的是MyClass1.Function1()MyClass2.Function1()。因为它是一个静态方法,所以必须向它传递一个对象的实例才能访问实例数据。不管你怎么称呼它。我不认为你有必要通过“这个”,我认为我做错了。我以前在vb中使用mustinherit来实现它。我想要一个公共类。用于继承。函数2与我使用的I类不同。但你总是从函数1开始。MyClass1.Function1()MyClass2.Function1()你有没有想过这个问题?