抽象クラスAnimal(動物)クラスと、それを継承した、Dog(犬)クラス、およびMonkey(猿)、ただしMonkeyクラスは自分で生成し、期待される実行結果を参考にしながら、Monkeyクラスを実装し、プログラムを完成させなさい。
といった問題ですが
いざ実装しようとすると
Program.csの抽象メソッドにアクセスすることができなくなっていなす。
みてみるとProtectedになっているためサブクラスからしかアクセスできないというのはわかりましたが
その場合Program.csで抽象メソッドを呼び出す際で引数がない場合はどのようにすればいいのかわかりません。
ご指摘宜しくお願いします。
c#
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 // Animalクラスのオブジェクトの配列を生成 6 Animal[] animals = new Animal[2]; 7 animals[0] = new Dog(); // 犬クラスのインスタンス生成 8 animals[1] = new Monkey(); // 猿クラスのインスタンス生成 9 10 for (int i = 0; i < animals.Length; i++) 11 { 12 animals[i].ShowName(); 13 animals[i].Move(); 14 animals[i].Bark(); 15 Console.WriteLine("------------"); 16 } 17 System.Threading.Thread.Sleep(10000); 18 } 19 }
抽象クラス
↓
c#
1 // 抽象クラス動物 2 abstract class Animal 3 { 4 // Name 5 protected string name = ""; 6 // Barking 7 protected abstract void Bark(); 8 // Moving 9 protected abstract void Move(); 10 // Show up Name's 11 public void ShowName() 12 { 13 Console.WriteLine(" 名前: {0} ", name); 14 } 15 }
サブクラス
犬
猿
c#
1 class Dog : Animal // 抽象クラスAnimalを継承したDogクラス 2 { 3 public Dog() // コンストラクタ 4 { 5 name = " 犬 "; 6 } 7 // 鳴く 8 protected override void Bark() 9 { 10 Console.WriteLine(" ワンワン "); 11 } 12 // 動く 13 protected override void Move() 14 { 15 Console.WriteLine(" 歩く "); 16 } 17 } 18``````c# 19class Monkey : Animal // 抽象クラスAnimalを継承したMonkeyクラス 20 { 21 public Monkey() // コンストラクタ 22 { 23 name = " 猿 "; 24 } 25 // 鳴く 26 protected override void Bark() 27 { 28 Console.WriteLine(" キーキー "); 29 } 30 // 動く 31 protected override void Move() 32 { 33 Console.WriteLine(" 木に登る "); 34 } 35 }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/16 09:08 編集
2017/05/16 09:06
2017/05/16 09:14