paiza 問題集 C#編 STEP: 8 クラスの継承 回答例
クラスの継承 C#編 STEP: 8 クラスの継承回答例です。
using System; using System.Collections.Generic; class Program { static void Main() { // 自分の得意な言語で // Let's チャレンジ!! var line = Console.ReadLine().Split(' '); var n = int.Parse(line[0]); var k = int.Parse(line[1]); var customers = new List<Person>(); for(int i=0;i<n;i++){ var age = int.Parse(Console.ReadLine()); if(age < 20){ customers.Add(new Person()); }else{ customers.Add(new Adult()); } } for(int i=0;i<k;i++){ line = Console.ReadLine().Split(' '); customers[int.Parse(line[0])-1].doOrder(line[1],line[2]); } foreach(var customer in customers){ Console.WriteLine(customer.bill); } } public class Person{ public int bill{get;set;} public virtual void doOrder(string menu,string price){ if(menu == "food" || menu == "softdrink"){ this.bill += int.Parse(price); } } } public class Adult : Person{ bool alcoholOrdered = false; public override void doOrder(string menu,string price){ this.bill += int.Parse(price); if(menu == "alcohol"){ this.alcoholOrdered = true; } if(menu == "food" && alcoholOrdered){ this.bill -= 200; } } } }