gpt4 book ai didi

c# - 了解如何使用类

转载 作者:行者123 更新时间:2023-11-30 19:02:24 25 4
gpt4 key购买 nike

我想了解如何在 C# 中使用或访问多个类,有人可以向我解释这段代码的作用吗?

public class Mammal : Animal
{
public Mammal(String name) : base(name) { }

public override void Eat(Food food)
{
Console.WriteLine("Mammal \"" + Name + "\" eats " + food.Name);
}
}

public override void Eat(Food food) 的目的是什么?我的意思是它有什么作用??

namespace ConsoleApplication1
{
public class Food
{
private String name;

Food(String name)
{
this.name = name;
}

public String Name
{
get
{
return name;
}
set
{
name = value;
}
}
}

public class Animal
{
private String name = "no name";

public String Name {
get
{
return name;
}
set
{
name = value;
}
}

private Animal() { }

public Animal(String name)
{
this.name = name;
}

public virtual void Eat(Food food)
{
Console.WriteLine("Animal \"" + Name + "\" eats " + food.Name);
}

public virtual void Born()
{
Console.WriteLine("Animal \"" + Name + "\" is born");
}

public virtual void Die()
{
Console.WriteLine("Animal \"" + Name + "\" is died");
}
}

public class Mammal : Animal
{
public Mammal(String name) : base(name) { }

public override void Eat(Food food)
{
Console.WriteLine("Mammal \"" + Name + "\" eats " + food.Name);
}

public override void Born()
{
Console.WriteLine("Mammal \"" + Name + "\" is born");
}

public override void Die()
{
Console.WriteLine("Mammal \"" + Name + "\" is died");
}

public virtual void FedMilk(Mammal[] children)
{
for (Int32 i = 0; i < children.Length; i++)
{
Console.WriteLine("Mammal \"" + Name + "\" feds milk child \"" + children[i].Name + "\"");
}
}
}

public class Horse : Mammal
{
public Horse(String name) : base(name) { }

public override void Eat(Food food)
{
Console.WriteLine("Horse \"" + Name + "\" eats " + food.Name);
}

public override void Born()
{
Console.WriteLine("Horse \"" + Name + "\" is born");
}
}
}

最佳答案

好的,

您已经定义了一个名为 mammal 的基本类,然后您创建了不同类型的哺乳动物,例如 Animal,然后创建了一种特定的动物(Horse)。

所以每个哺乳动物都需要进食,所以你创建了一个叫做 eat 的函数..

但是每一种哺乳动物都吃同样的东西吗?不!!!

但是每个哺乳动物都需要进食。

所以在那个地方 override 属性就派上用场了,它允许你覆盖“吃”的基本功能,这样你就可以指定什么吃每一种特定的动物。

因此,当您创建一个狗类时,您将覆盖 eat 函数并指定谁吃一些狗粮。

但是因为您所有的特定动物也是动物,您可以将它们称为动物并打印 eat 函数。

假设您想看看什么东西吃掉了每只动物。您将创建一个动物列表循环并打印 eat 函数。

因为您已经覆盖了 eat 函数并指定了每种食物。您将为每只动物获得正确的食物。

我是不是说清楚了?

例如看这段代码

List<Animal> animals = new List<Animal>();

Horse hr = new Horse();
Dog dg = new Dog();
Bird br = new Bird();

animals.Add(hr);
animals.Add(dg);
animals.Add(br);

foreach(var animal in Animals)
{
Console.WriteLine(animal.eat());
}

关于c# - 了解如何使用类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12609751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com