В чем практическая польза виртуального? Просто для достижения привязки времени выполнения или это означает больше, чем это
что такое использование привязки времени выполнения? я имею в виду не определение, а практическое преимущество
Что я уже пробовал:
public class Base { public virtual void SomeMethod() { } } public class Derived : Base { public override void SomeMethod() { } } ... Base d = new Derived(); d.SomeMethod();
он вызовет метод производного класса. но зачем это нужно. если я могу сделать это, создав экземпляр класса derivd. и объявление метода базового класса как запечатанного.
я могу кодировать вот так
public class Base { public virtual void SomeMethod() { } } public class Derived : Base { public override void SomeMethod() { } } ... Derved d = new Derived(); d.SomeMethod();
он будет называться базовым классом, а также методами производного класса.
если я объявлю его запечатанным, то все будет в порядке...
public class Base { public virtual void SomeMethod() { } } public class Derived : Base { public override void SomeMethod() { } } ... Derived d = new Derived(); d.SomeMethod(); //it will called derived method base b=new base(); b.somemethod(); //it will call base method
тогда зачем нужен виртуальный ? для привязки времени выполнения ? если да, то в чем польза привязки rutime или в чем практическое преимущество привязки времени выполнения?