using System;
using Animals;
class Pet {
static void Main(string[] args) {
Animal[] pets = {
new Dog("ぽち"),
new Cat("たま", 1)
};
foreach(Animal pet in pets) {
pet.play();
}
}
}
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("...でも寝る");
}
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBBbmltYWxzOwoKY2xhc3MgUGV0IHsKICAgIHN0YXRpYyB2b2lkIE1haW4oc3RyaW5nW10gYXJncykgewogICAgICAgIEFuaW1hbFtdIHBldHMgPSB7CiAgICAgICAgICAgIG5ldyBEb2coIuOBveOBoSIpLAogICAgICAgICAgICBuZXcgQ2F0KCLjgZ/jgb4iLCAxKQogICAgICAgIH07CiAgICAgICAgCiAgICAgICAgZm9yZWFjaChBbmltYWwgcGV0IGluIHBldHMpIHsKICAgICAgICAgICAgcGV0LnBsYXkoKTsKICAgICAgICB9CiAgICB9Cn0KCm5hbWVzcGFjZSBBbmltYWxzIHsKICAgIGFic3RyYWN0IGNsYXNzIEFuaW1hbCB7CiAgICAgICAgcHJvdGVjdGVkIHN0cmluZyBuYW1lOwogICAgICAgIAogICAgICAgIHB1YmxpYyBBbmltYWwoc3RyaW5nIG5hbWUpIHsKICAgICAgICAgICAgdGhpcy5uYW1lID0gbmFtZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgcHVibGljIHZpcnR1YWwgdm9pZCBwbGF5KCkgeyB9CiAgICB9CiAgICAKICAgIGNsYXNzIERvZyA6IEFuaW1hbCB7CiAgICAgICAgcHVibGljIERvZyhzdHJpbmcgbmFtZSkgOiBiYXNlKG5hbWUpIHsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgcHVibGljIG92ZXJyaWRlIHZvaWQgcGxheSgpIHsKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoIuOCj+OCk+OCj+OCk++8gSIgKyBuYW1lICsgIuOBoOOCiCEiKTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGNsYXNzIENhdCA6IEFuaW1hbCB7CiAgICAgICAgcHJpdmF0ZSBpbnQgc2xlZXA7CiAgICAgICAgCiAgICAgICAgcHVibGljIENhdChzdHJpbmcgbmFtZSwgaW50IHNsZWVwKSA6IGJhc2UobmFtZSkgewogICAgICAgICAgICB0aGlzLnNsZWVwID0gc2xlZXA7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHB1YmxpYyBvdmVycmlkZSB2b2lkIHBsYXkoKSB7CiAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCLjgavjgoPjgYLvvIEiICsgbmFtZSArICLjgaDjgoghIik7CiAgICAgICAgICAgIGlmKHNsZWVwID09IDEpIHsKICAgICAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCIuLi7jgafjgoLlr53jgosiKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQo=