You are on page 1of 2

interface IMakeNoise

{
string MakeNoise();
}
interface IMakeTrick
{
string MakeTrick();
}
abstract internal class Animal : IMakeNoise, IMakeTrick
{
string name;
int age;
public virtual string MakeNoise()
{
return $"My name is {this.name}. I am {this.age} years old.";
}

public virtual string MakeTrick()


{
return "Look at my trick!";

}
public Animal(string name, int age)
{
this.age = age;
this.name = name;
}

}
class Cat : Animal
{
public Cat(string name, int age) : base (name, age)
{

}
public override string MakeNoise()
{

return "Meow!" + " " + base.MakeNoise();

}
public override string MakeTrick()
{
return "No trick for you! Im too lazy!";
}

}
class Dog : Animal
{
public Dog(string name, int age) : base(name, age)
{

}
public override string MakeNoise()
{

return "Woof!" + " " + base.MakeNoise();

}
public override string MakeTrick()
{
return "Hold my paw, human!";
}
}

internal class Program


{
static void Main(string[] args)
{
Cat cat = new Cat("Pesho", 21);
Console.WriteLine(cat.MakeNoise());
Console.WriteLine(cat.MakeTrick());
Console.WriteLine("--------------------");
Dog dog = new Dog("Penka", 6);
Console.WriteLine(dog.MakeNoise());
Console.WriteLine(dog.MakeTrick());
}
}

You might also like