На данный вопрос уже ответили:
Поднялся интересный вопрос. Я как послушный мальчик прочел в доках(микрософт док), что определение виртуал требуется если я планирую разрешать перекрытие методов в потомках, а если я такого определения перед методом не напишу, то фиг он в потомке перекроется.
Эксперимента ради написал следующий код.
class A
{
void FuncA()
{
}
}
class B : A
{
new void FuncA()
{
base.FuncA();
}
}
Получается, что если верить микрософт доку такая конструкция не должна компилироваться. А если скомпилируется вызов базовой функции в таком потомке не должен пройти.
Запуск проходит, обращение к предку проходит.
Обьясните или дайте ссылку на чтонибудь почитать. Какой механизм наследования и в чемже разница между обычной функцией и виртуальной?
Перекрытие в данном случае не произойдёт при приведении одного типа в другой:
var b = new B();
b.FuncA(); // будет тот что определён в B класса
var a = (А) b;
a.FuncA(); // всё равно будет вызов метода из B класса
Уже есть хороший ответ по схожей теме.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Чисто вопрос интереса радиВозможно ли вызвать метод старее чем предок из потомка? Чтонибудь типа
Добрый деньНаписал приложение-1 на C#, которое создает папку
Не могу справится с, на первый взгляд,простой задачей: В строке найти количество вхождений каждой буквыСоздал класс с двумя свойствами