错误1'Interface.myDerivedClass.myMethod()':虚拟或抽象成员不能是私有的c:\ users \ igmfun \ documents \ visual studio 2012 \ Projects \ Interface \ Interface \ Program.cs 16非虚拟的非抽象方法导致“c#虚拟或抽象成员不能私有”
使虚拟或抽象成员专用将使其它类(包括派生类)无法访问,从而无法覆盖该方法,使其虚拟或抽象质量毫无意义。我知道了。
但是等等......编译器抱怨派生类中的成员,而不是基类......并且我从来没有将该成员声明为虚拟或抽象...所以重写的成员(派生类)从它正在覆盖的虚拟或抽象成员继承虚拟或抽象的质量?如果我将“override void myMethod(){}”更改为“public override void myMethod(){}”,则会出现一个新错误,“找不到合适的方法覆盖”。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Interface
{
interface myInterface
{
void myMethod();
}
class myDerivedClass : myInterface
{
override void myMethod()
{
}
}
class Program
{
static void Main(string[] args)
{
}
}
}
关键字实现了接口书房的需要'override'关键字 – chengbo 2014-10-29 01:41:39
所有的接口方法都是公开的。您在派生类中的签名应该只是public void myMethod(){}。如果您不指定public,则假定方法在派生类中是私有的。 – 2014-10-29 01:44:48
正如MaxHampton暗示的那样,你不需要'override'关键字,因为你不会覆盖任何东西。如果在基类中声明了“虚拟”或“抽象”,则只能重写某些内容。接口成员已实现,未被覆盖。 – jmcilhinney 2014-10-29 01:47:50