Не понимание полиморфизма и статического поля на примере представленного кода - 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;}
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д