using System;
namespace Animals {
abstract class Animal {
protected string name;
public Animal(string name) {
this.name = name;
}
public virtual void play() { }
}
class Dog : Animal {
public Dog(string name) : base(name) {
}
public override void play() {
Console.WriteLine("わんわん!" + name + "だよ!");
}
}
class Cat : Animal {
private int sleep;
public Cat(string name, int sleep) : base(name) {
this.sleep = sleep;
}
public override void play() {
Console.WriteLine("にゃあ!" + name + "だよ!");
if(sleep == 1) {
Console.WriteLine("...でも寝る");
}
}
}
class Pet {
static void Main(string[] args) {
Animal[] pets = {
new Dog("ぽち"),
new Cat("たま", 1)
};
foreach(Animal pet in pets) {
pet.play();
}
}
}
}
dXNpbmcgU3lzdGVtOwoKbmFtZXNwYWNlIEFuaW1hbHMgewogICAgYWJzdHJhY3QgY2xhc3MgQW5pbWFsIHsKICAgICAgICBwcm90ZWN0ZWQgc3RyaW5nIG5hbWU7CiAgICAgICAgCiAgICAgICAgcHVibGljIEFuaW1hbChzdHJpbmcgbmFtZSkgewogICAgICAgICAgICB0aGlzLm5hbWUgPSBuYW1lOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBwdWJsaWMgdmlydHVhbCB2b2lkIHBsYXkoKSB7IH0KICAgIH0KICAgIAogICAgY2xhc3MgRG9nIDogQW5pbWFsIHsKICAgICAgICBwdWJsaWMgRG9nKHN0cmluZyBuYW1lKSA6IGJhc2UobmFtZSkgewogICAgICAgIH0KICAgICAgICAKICAgICAgICBwdWJsaWMgb3ZlcnJpZGUgdm9pZCBwbGF5KCkgewogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgi44KP44KT44KP44KT77yBIiArIG5hbWUgKyAi44Gg44KIISIpOwogICAgICAgIH0KICAgIH0KICAgIAogICAgY2xhc3MgQ2F0IDogQW5pbWFsIHsKICAgICAgICBwcml2YXRlIGludCBzbGVlcDsKICAgICAgICAKICAgICAgICBwdWJsaWMgQ2F0KHN0cmluZyBuYW1lLCBpbnQgc2xlZXApIDogYmFzZShuYW1lKSB7CiAgICAgICAgICAgIHRoaXMuc2xlZXAgPSBzbGVlcDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgcHVibGljIG92ZXJyaWRlIHZvaWQgcGxheSgpIHsKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoIuOBq+OCg+OBgu+8gSIgKyBuYW1lICsgIuOBoOOCiCEiKTsKICAgICAgICAgICAgaWYoc2xlZXAgPT0gMSkgewogICAgICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoIi4uLuOBp+OCguWvneOCiyIpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGNsYXNzIFBldCB7CiAgICAgICAgc3RhdGljIHZvaWQgTWFpbihzdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgICAgIEFuaW1hbFtdIHBldHMgPSB7CiAgICAgICAgICAgIG5ldyBEb2coIuOBveOBoSIpLAogICAgICAgICAgICBuZXcgQ2F0KCLjgZ/jgb4iLCAxKQogICAgICAgICAgICB9OwogICAgICAgIAogICAgICAgICAgICBmb3JlYWNoKEFuaW1hbCBwZXQgaW4gcGV0cykgewogICAgICAgICAgICAgICAgcGV0LnBsYXkoKTsKICAgICAgICAgICAgfQogICAgICAgIAogICAgICAgIH0KICAgIH0KfQo=