Не понимание полиморфизма и статического поля на примере представленного кода - C#
Формулировка задачи:
Здравствуйте, Объясните мне пожалуйста по следующему коду:
Вопрос касается вот этого участка кода:
По какой причине по первой ссылке всё таки в консоль будет выведено 1, а по второй 2, если поле статическое (оно ведь одно на весь класс и должно вывестись в обоих строчках значение 2)?
Так же вопрос по следующему коду:
Здесь идёт сокрытие имён в классе Derived. На консоль будет выведено "Base", но я не понимаю почему, да ссылка идёт на базовый класс, но ведь ссылка на объект производного класса и там реализация возвращения строки "Derived"? Я понимаю что ссылка на базовый класс видит только то, что определено в базовом классе, но ведь сигнатура методов одна. Объясните пожалуйста.
using System;
class Base
{
}
class Derived : Base
{
}
class Generic<T>
{
public static int id;
}
class Program
{
static void Main()
{
Generic<Derived>.id = 1;
Generic<Base>.id = 2;
Console.WriteLine(Generic<object>.id);
Console.WriteLine(Generic<Base>.id);
Console.WriteLine(Generic<Derived>.id);
Console.ReadKey();
}
}
Generic<Derived>.id = 1;
Generic<Base>.id = 2;
Console.WriteLine(Generic<object>.id);
Console.WriteLine(Generic<Base>.id);
Console.WriteLine(Generic<Derived>.id); class Base
{
public string M()
{
return "Base";
}
}
class Derived : Base
{
public new string M()
{
return "Derived";
}
}
class Program
{
static void Main(string[] args)
{
Base obj = new Derived();
Console.WriteLine(obj.M());
Console.ReadKey();
}
}Решение задачи: «Не понимание полиморфизма и статического поля на примере представленного кода»
textual
Листинг программы
class Generic_Base { public static int id;}
class Generic_Derived { public static int id;}
class Generic_Object { public static int id;}