public class A
{
public int F ()
{
// do something
}
}
public class B : A
{
public static B F ()
{
B b = new B ();
// do something more with b
b.base.F (); // this doesn't work
b.A.F (); // this doesn't work either
return b;
}
}
调用A.F()的正确语法是什么?请注意B.F()是一个静态函数。
关于“更改名称评论”的编辑:
请不要错误地从这个简单的例子中得出结论。实际上,这些函数用于读取XML,并且函数签名在所有受影响的类中都是ReadXML (XmlNode parent, int id)
。
答案 0 :(得分:3)
以下方法将起作用(现在经过测试,这是一个正确的答案)来调用A类的F方法。
public static B F()
{
B b = new B();
// do something more with b
((A)b).F(); // this works
return b;
}
您可能想考虑更改名称。我发现很难相信描述性的方法名称对于返回int的东西和返回类B的东西是相同的。也许后者应该在那里有一个Create,因为它似乎是某种工厂方法?
答案 1 :(得分:0)
我认为在静态方法中使用任何需要使用实例/继承的关键字是不可能的,例如base
或this
。在班级F()
中调用B
时,没有班级B
的实例,因此您无法引用任何base
。
作为一个选项,您可以在A
中创建课程B.F()
的对象,并像F()
一样调用A
课程的a.F()
,或者您需要{在F()
中{1}} A
,static
致A.F()
。{/ p>