В чем разница между new и override? - C#
Формулировка задачи:
Цитирую с msdn:
Для чего нужно вообще использовать new? поведение методов одно и то же что и при override.
Или мой код слишком примитивен? Хочу просто разобраться для чего существует два варианта. Или это же просто для того, чтобы не вводить в заблуждение других разработчиков, если методы с одинаковыми именами, но разными совершенно ф-ми?
и получим тот же результат. Так мне интересно для чего все же new?
Если необходимо, чтобы производный член имел то же имя, что и член базового класса, но не нужно, чтобы он участвовал в виртуальном вызове, можно использовать ключевое слово new. Ключевое слово new располагается перед возвращаемым типом замещаемого члена класса. Ниже приведен пример.
Листинг программы
- class A
- {
- public A()
- {
- Console.WriteLine("My A.");
- }
- public virtual void print()
- {
- Console.WriteLine("Print A.");
- }
- }
- class B : A
- {
- public B()
- {
- Console.WriteLine("My B.");
- print();
- }
- public new void print()
- {
- //base.print();
- Console.WriteLine("Print B.");
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- A a = new A();
- B b = new B();
- }
- }
Кстати, в классе C наследуемом от класса В уже перегрузки метода print() сделать нельзя.
Но даже в этом случае мы же можем использовать в классе В:
Листинг программы
- public sealed override void print() {}
Решение задачи: «В чем разница между new и override?»
textual
Листинг программы
- class Base
- {
- public virtual void Do1()
- {
- Console.WriteLine("Hello World");
- }
- public virtual void Do2()
- {
- Console.WriteLine("Hello World");
- }
- }
- class Test: Base
- {
- string Name="";
- public Test(string name){Name=name;}
- public new void Do1(){Console.WriteLine("Hello " + Name); }
- public override void Do2(){Console.WriteLine("Hello " + Name); }
- }
- class Program
- {
- static void Main(string[] args)
- {
- Test t = new Test("Bill");
- (t as Base).Do1();
- (t as Base).Do2();
- Console.Read();
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д