2017-12-09 4 views
0
class Program 
    { 
     static void Main(string[] args) 
     { 
    // in here iam create an instance of child class 
      var obj = new dog("meat"); 
      obj.run(); 
      obj.sleep(); 

      Console.ReadLine(); 

     } 
    } 
    abstract class animal { 
     protected string eating; 
     abstract public void sound(); 

     public void run() { 
      Console.WriteLine("Runnig"); 
     } 
     public void sleep() 
     { 
      Console.WriteLine("sleeping"); 
     } 
    } 
    class cat : animal 
    { 
     public cat(string eat) { 
      this.eating = eat; 
     } 
// this is my child class define parent class method 
     protected override void sound() 
     { 
      Console.WriteLine("Meow"); 

     } 
    } 
    class dog : animal{ 

     public dog(string eat){ 
      this.eating = eat; 
     } 
     public override void sound() 
     { 
      Console.WriteLine("Woof"); 

     } 
    } 

を非抽象メソッドを呼び出している間、私はエラーを得た:エラー1「Abbstraction.cat.sound()」: '国民オーバーライドするときアクセス修飾子を変更することはできませんがメンバーのAbbstraction.animalを継承しています。アブストラクションエラー//子クラスを経由して

答えて

1

抽象メソッドシグネチャsound()は、公開されているabstract class Animalに定義します。

後で、アクセス修飾子をprotectedに変更しようとしました。これは許可されていません。基本クラスで定義された修飾子に固執する必要があります。

関連する問題