, . . , . , , .
, :
public interface IAnimal
{
string GetName();
string Talk();
}
public abstract class AnimalBase : IAnimal
{
private string _name;
protected AnimalBase(string name)
{
_name = name;
}
protected AnimalBase(string name, bool isCutsey)
{
if (isCutsey)
{
_name = name + "-poo";
}
}
public virtual string GetName()
{
return _name;
}
abstract public string Talk();
}
public class Dog : AnimalBase
{
public Dog(string name)
: base(name)
{
}
public Dog(string name, bool isCutsey)
: base(name, isCutsey)
{
}
public override string Talk()
{
return "Woof! Woof!";
}
}
public class SmallDog : Dog
{
private bool _isPurseDog;
public SmallDog(string name, bool isPurseDog)
: base(name, true)
{
_isPurseDog = isPurseDog;
}
public bool DoesThisDogFitInAPurse()
{
return _isPurseDog;
}
public override string Talk()
{
return "Yip! Yip!";
}
}
public class Chihuahua : SmallDog
{
private int _hatSize;
public Chihuahua(string name, int hatSize)
: base(name, true)
{
_hatSize = hatSize;
}
public int GetHatSize()
{
return _hatSize;
}
}
public class Cat : AnimalBase
{
public Cat(string name)
: base(name)
{
}
public Cat(string name, bool isCutsey)
: base(name, isCutsey)
{
}
public override string Talk()
{
return "Meoooowwww...";
}
}
public class Lion : Cat
{
public Lion(string name)
: base(name)
{
}
public override string Talk()
{
return "ROAR!!!!!!!!";
}
}
[]
, , . . . . , , . , true/false.