1

私は 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);
        }
    }    
}

しかし、2つのエラーが見つかりました:

エラー 1 'ConsoleApplication1.Ziemia' は、継承された抽象メンバー 'ConsoleApplication1.Planeta.Nazwa()' を実装していません 行: 24 列: 18

エラー 2 'ConsoleApplication1.Ziemia.Nazwa(string)': オーバーライドする適切なメソッドが見つかりません 行: 28 列: 30

なぜこのようなエラーが発生するのですか?

それらを回避し、プログラムを適切に動作させる方法は?

また: 2 番目のエラーで、関数が受け取る引数のタイプとして"string" 'ConsoleApplication1.Ziemia.Nazwa( string )'が表示される理由がわかりません。

4

1 に答える 1

0

可能性のある問題のパラメーターを排除するためのより簡単な方法を試してみてください。次のコンソール アプリケーションの例を試すことができます。従業員をジミアに、技術者クラスを「プラネタ*」に置き換えます。

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

于 2013-05-27T18:10:56.427 に答える