【问题标题】:How to make use of abstract method overriding?如何利用抽象方法覆盖?
【发布时间】:2013-05-27 16:37:13
【问题描述】:

我正在学习 C#,但我发现了进一步学习的问题。我有这样的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main()
        {
            Planeta Z1 = new Ziemia("matka Ziemia");
            Z1.Nazwa();
            System.Console.ReadKey();
        }
 
    }
    public abstract class Planeta
    {
        protected string nazwaPlanety;
        public Planeta() { nazwaPlanety = " "; }
        public Planeta(string s) { nazwaPlanety = s; }
        public abstract void Nazwa();        
    }
    public class Ziemia: Planeta
    {
        public Ziemia() { }
        public Ziemia(string s) : base(s){ }
        public override void Nazwa()
        {
            System.Console.WriteLine(this.nazwaPlanety);
        }
    }    
}

但我发现了两个错误:

错误 1 ​​'ConsoleApplication1.Ziemia' 未实现继承的抽象成员 'ConsoleApplication1.Planeta.Nazwa()' 行:24 列:18

错误 2 'ConsoleApplication1.Ziemia.Nazwa(string)': 找不到合适的方法来覆盖 Line: 28 Column: 30

为什么会出现这样的错误?

如何避免它们并使程序正常工作?

另外:我不知道为什么在第二个错误中它显示“字符串”'ConsoleApplication1.Ziemia.Nazwa(string)' 作为函数将采用的参数类型。

【问题讨论】:

  • 我已经编译(并运行)了它。它有效。
  • 请出示您的真实密码。您在问题中的代码是可以的。
  • 尝试清理并重建应用程序
  • 嘿...但这确实是我的代码。清楚地从我的 Microsoft Visual C# 2010 Express 控制台复制:/
  • 您是否有未保存的文档?

标签: c# inheritance overriding abstract


【解决方案1】:

尝试一种更简单的方法来消除可能的问题参数。您可以尝试以下控制台应用程序示例。用 Ziemia 替换员工,用“Planeta*”替换技术人员类。

http://www.codecandle.com/articles/csharp/classes/abstract-classes.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-12
    • 1970-01-01
    • 1970-01-01
    • 2014-03-18
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多