Я немного запутался в переопределении и скрытии метода на С#. Также будет оценено практическое использование каждого из них, а также объяснение того, когда каждый будет использовать каждый.
Я запутался в переопределении - почему мы переопределяем? То, что я узнал до сих пор, заключается в том, что, перегружая, мы можем предоставить желаемую реализацию методу производного класса без изменения сигнатуры.
Если я не переопределяю метод суперкласса, и я вношу изменения в метод в подклассе, будут ли внесены изменения в метод суперкласса?
Я также смущен о следующем: что это демонстрирует?
class A
{
virtual m1()
{
console.writeline("Bye to all");
}
}
class B : A
{
override m1()
{
console.writeLine("Hi to all");
}
}
class C
{
A a = new A();
B b = new B();
a = b; (what is this)
a.m1(); // what this will print and why?
b = a; // what happens here?
}