Основы объектно-ориентированного программирования на языке C# book | Page 138

7 Класи } } Щоб не було плутанини в термiнологiı̈, розглянемо ще один при- клад, що демонструє полiморфiзм (перевизначення) i перевантаження методiв. using System; namespace Polymorphism2 { class A { public virtual string DemoPoly(string a) { return "Base class. Display string"; } public virtual string DemoPoly(double a) { return "Base class. Display double"; } } class B : A { public override string DemoPoly(string a) { return "Inharitance class. Demo Poly string"; } public override sealed string DemoPoly(double a) { return "Inharitance class. Demo Poly double"; } } class Program { public static void Main(string[] args) { A a = new A(); B b = new B(); Console.WriteLine(a.DemoPoly("test")); Console.WriteLine(b.DemoPoly("test")); Console.WriteLine(a.DemoPoly(3.14)); Console.WriteLine(b.DemoPoly(3.14)); Console.ReadKey(); } } } У даному прикладi в базовому класi А два методи Demopoly(string a) i Demopoly(double a) , якi перевантаженi ( overload ) у даному класi - у них рiзна сигнатура. У похiдному вiд А класi В є тi ж методи, якi перевизначенi ( overrive ). Додатково в класi B метод Demopoly(double a) позначений як запечатаний sealed . Це зроблено для того, щоб при- пинити вiртуальне спадкування. Але слiд зауважити, що запечатанi методи можна перевизначити у похiдному класi використовуючи клю- 138