Я наследую класс Растение и Животное от класса Королевство и класс Млекопитающее от класса Животное.
Я создал булевы переменные fly, молоко и фрукты во всех классах, которые назначаются по-разному в зависимости от классов.
В Королевстве существуют методы, которые проверяют муху, молоко и фрукты и соответственно выдают результат. Методы наследуются всеми классами.
Но когда я использую объект Plant и млекопитающее для использования унаследованных методов, вместо предполагаемой переменной класса используется переменная класса kingdom.
Код немного длинный. Так что извиняюсь.
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]