[英]No suitable method found to override c# despite there being one?
我試圖在這里找到一個關於這個問題的解決方案,我也覺得我的問題非常小,但我無法弄清楚出了什么問題。 它告訴我Rectangle.draw():找不到合適的方法來覆蓋。
public interface shape
{
void draw();
}
//concrete classes that implemenet interfaces
public class Rectangle : shape
{
public override void draw()
{
Console.WriteLine(this.GetType().Name + "'s inside function (generate stuff here) ");
}
}
錯誤是正確的。 如果方法存在於繼承的基類中,則只能覆蓋該方法。 你的Rectangle類沒有繼承任何東西; 它只實現了界面“形狀”。
刪除“覆蓋”關鍵字,一切都會好的。
此時C#的行為有點令人困惑,特別是對於具有C ++背景的人。 雖然在幕后,界面與抽象基類幾乎相同,但C#不會將接口實現稱為覆蓋。 這有一個優點:對於每個方法,您可以指定子類是否可以覆蓋接口實現。 如果指定virtual
實現你的畫法,上課的時候square
,從矩形繼承了可以實現自己的繪制方法,如果你指定什么,方無法覆蓋平局。 如果您僅將調用轉發給類的某些(受保護)方法,則后者會很有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.