【发布时间】:2019-04-19 16:11:56
【问题描述】:
我从王国类继承植物和动物类,从动物类继承哺乳动物类。
我在所有类中创建了布尔变量 fly、milk 和 fruits,它们根据类分配不同。
王国中有一些方法可以检查苍蝇、牛奶和水果并相应地给出输出。方法被所有类继承。
但是当我使用植物和哺乳动物的对象来使用继承方法时,使用王国类变量而不是预期的类变量。
代码有点长。所以很抱歉。
class Kingdom
{
private bool milk, wings, fruits;
public Kingdom() : this(true, true, true) {}
public Kingdom(bool m, bool w, bool f)
{
milk = m;
wings = w;
fruits = f;
}
public virtual string me()
{
return "Kingdom Member";
}
public virtual void Fly()
{
if(this.wings)
{
Console.WriteLine(me() + " may Fly.");
}
else
{
Console.WriteLine(me() + " can not Fly.");
}
}
public virtual void Fruit()
{
if(this.fruits)
{
Console.WriteLine(me() + " may bear Fruits.");
}
else
{
Console.WriteLine(me() + " can not bear Fruits.");
}
}
public virtual void Milk()
{
if(this.milk)
{
Console.WriteLine(me() + " may produce milk.");
}
else
{
Console.WriteLine(me() + " can not produce milk.");
}
}
}
class Plant : Kingdom
{
private bool milk, wings, fruits;
public Plant()
{
milk = false;
wings = false;
fruits = true;
}
public override string me()
{
return "Plants";
}
}
class Animelia : Kingdom
{
private bool milk, wings, fruits;
public Animelia()
{
milk = true;
wings = true;
fruits = false;
}
public override string me()
{
return "Animals";
}
}
class Mamalia : Animelia
{
private bool milk, wings, fruits;
public Mamalia()
{
milk = true;
wings = false;
fruits = false;
}
public override string me()
{
return "Mamals";
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!\nLets learn Basic Kingdoms.\n");
Kingdom p1 = new Plant();
Kingdom m1 = new Mamalia();
p1.Fly();
p1.Milk();
p1.Fruit();
Console.WriteLine();
m1.Fly();
m1.Milk();
m1.Fruit();
}
}
这些是我担心的警告:
Program.cs(80,35):警告 CS0414:已分配字段“Animelia.fruits”,但从未使用过其值 [E:\VS Code Programms\C#\Assignment\Q5\Q5.csproj]
Program.cs(80,28): 警告 CS0414: 字段 'Animelia.wings' 已分配,但其值从未使用过 [E:\VS Code Programms\C#\Assignment\Q5\Q5.csproj]
Program.cs(97,28): 警告 CS0414: 字段 'Mamalia.wings' 已分配,但从未使用其值 [E:\VS Code Programms\C#\Assignment\Q5\Q5.csproj]
Program.cs(63,28):警告 CS0414:已分配字段“Plant.wings”,但从未使用其值 [E:\VS Code Programms\C#\Assignment\Q5\Q5.csproj]
Program.cs(97,35):警告 CS0414:“Mamalia.fruits”字段已分配,但从未使用过其值 [E:\VS Code Programms\C#\Assignment\Q5\Q5.csproj]
Program.cs(63,22):警告 CS0414:已分配字段“Plant.milk”,但从未使用其值 [E:\VS Code Programms\C#\Assignment\Q5\Q5.csproj]
Program.cs(63,35):警告 CS0414:已分配字段“Plant.fruits”,但从未使用其值 [E:\VS Code Programms\C#\Assignment\Q5\Q5.csproj]
Program.cs(80,22):警告 CS0414:已分配字段“Animelia.milk”,但从未使用其值 [E:\VS Code Programms\C#\Assignment\Q5\Q5.csproj]
Program.cs(97,22): 警告 CS0414: 字段 'Mamalia.milk' 已分配,但其值从未使用 [E:\VS Code Programms\C#\Assignment\Q5\Q5.csproj]
【问题讨论】:
标签: c# inheritance