錯誤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