给我用c#写一个含有数组,继承,多态,静态成员和家庭成员函数,接口的例子
时间: 2024-03-01 07:53:29 浏览: 144
好的,下面是一个包含数组、继承、多态、静态成员和家庭成员函数、接口的 C# 例子:
```csharp
using System;
interface IAnimal
{
void Sound();
}
class Animal : IAnimal
{
public virtual void Sound()
{
Console.WriteLine("Animal is making a sound.");
}
}
class Dog : Animal
{
public override void Sound()
{
Console.WriteLine("The dog says woof.");
}
}
class Cat : Animal
{
public override void Sound()
{
Console.WriteLine("The cat says meow.");
}
}
class Zoo
{
private Animal[] animals;
private static int totalAnimals;
public Zoo(int size)
{
animals = new Animal[size];
}
public void AddAnimal(Animal animal)
{
if (totalAnimals < animals.Length)
{
animals[totalAnimals] = animal;
totalAnimals++;
}
else
{
Console.WriteLine("Zoo is full, cannot add more animals.");
}
}
public void MakeAllAnimalsSound()
{
Console.WriteLine("All animals in the zoo are making a sound:");
for (int i = 0; i < totalAnimals; i++)
{
animals[i].Sound();
}
}
public static void PrintTotalAnimals()
{
Console.WriteLine("Total animals in all zoos: " + totalAnimals);
}
}
class Program
{
static void Main(string[] args)
{
Zoo.PrintTotalAnimals();
Zoo zoo = new Zoo(3);
Animal dog = new Dog();
Animal cat = new Cat();
Animal animal = new Animal();
zoo.AddAnimal(dog);
zoo.AddAnimal(cat);
zoo.AddAnimal(animal);
zoo.MakeAllAnimalsSound();
Zoo.PrintTotalAnimals();
}
}
```
在这个例子中,我们定义了一个接口 `IAnimal`,它有一个 `Sound` 方法。然后我们定义了一个基类 `Animal`,它实现了 `IAnimal` 接口,并有一个 `Sound` 方法,这个方法在子类中可以被重写。我们又定义了两个子类 `Dog` 和 `Cat`,它们都继承自 `Animal`,并重写了 `Sound` 方法。
接着我们定义了一个 `Zoo` 类,它包含一个 `Animal` 类型的数组和一个静态成员变量 `totalAnimals`,它记录了所有动物的总数。`Zoo` 类有一个构造函数,它接收一个整数参数,表示动物园的大小,然后在构造函数中初始化了 `animals` 数组。`Zoo` 类还有一个 `AddAnimal` 方法,它接收一个 `Animal` 对象并将它添加到 `animals` 数组中。`Zoo` 类还有一个 `MakeAllAnimalsSound` 方法,它会调用每个动物的 `Sound` 方法,输出动物发出的声音。最后,`Zoo` 类还有一个静态的 `PrintTotalAnimals` 方法,它会输出所有动物的总数。
在 `Main` 方法中,我们创建了一个 `Zoo` 对象,并向它添加了三个动物:一个狗、一只猫和一个普通的动物。我们调用了 `MakeAllAnimalsSound` 方法,这个方法会让所有动物发出声音。最后,我们调用了 `PrintTotalAnimals` 方法,它会输出动物的总数。
阅读全文