Основы объектно-ориентированного программирования на языке C# book | Page 140
7 Класи
Console.WriteLine(b.Demopoly(3.14)); // надруковано
Inharitance class. Demo Poly double from B
Console.WriteLine(c.Demopoly(3.14)); // надруковано
Inharitance class. Demo Poly double from C
Console.ReadKey();
}
}
}
Не слiд плутати полiморфiзм iз сховуванням ( hide ) методу. Якщо
необхiдно, щоб метод похiдного класу мав таке саме iм’я як i ме-
тод базового класу, але не брав участь у вiртуалiзацiı̈, то можна за
допомогою ключового слова new сховати реалiзацiю методу базового
классу:
using System;
namespace HideTest
{
class A
{
public void Test()
{
Console.WriteLine("test from
}
}
class B: A
{
public new void Test()
{
Console.WriteLine("test from
}
}
class Program
{
static void Main(string[] args)
{
B test2 = new B();
test2.Test();
//
A test1 = (A)test2;
test1.Test();
//
Console.ReadKey();
}
}
}
Class A");
Class B");
test from Class B
test from Class A
В даному прикладi виклик методу Test() в операторi test2.Test()
не має вiдношення до полiморфiзму. Сховування методiв використо-
вується у випадку, коли, наприклад, у бiблiотецi є клас A i вiд нього
спадкується клас B в якому описаний метод Test() . Припустимо, що
виходить нова версiя класу A але вже цей клас теж мiстить в собi
зовсiм iнший метод Test() . Тодi, щоб не було плутанини слiд метод
Test() в класi B описати як new .
Розглянемо ще випадки використання полiморфiзму. У наступно-
140