25.07.2017 Views

Intro-CSharp-Book-v2015

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Глава 20. Принципи на обектно-ориентираното програмиране 827<br />

}<br />

{<br />

}<br />

Console.WriteLine(new object());<br />

Console.WriteLine(new Felidae(true));<br />

Console.WriteLine(new Lion(true, 80));<br />

Console.WriteLine(new AfricanLion(true, 80));<br />

Резултатът е:<br />

System.Object<br />

Chapter_20_OOP.Felidae<br />

Chapter_20_OOP.Lion<br />

(AfricanLion, male: True, weight: 80)<br />

Press any key to continue . . .<br />

Забележете, че извикването на ToString() става скрито. Когато на метода<br />

WriteLine() подадем някакъв обект, този обект първо се преобразува до<br />

символен низ чрез метода му ToString() и след това се отпечатва в<br />

изходния поток. Така при печатане на конзолата няма нужда изрично да<br />

преобразуваме обектите до символен низ.<br />

Виртуални методи и ключовите думи override и new<br />

Трябва да укажем изрично на компилатора, че искаме нашият метод да<br />

пренаписва друг. За целта се използва ключовата дума override.<br />

Забележете какво се случва ако я премахнем:<br />

Нека си направим един експеримент и използваме ключовата дума new<br />

вместо override:<br />

public class AfricanLion : Lion<br />

{<br />

// ...<br />

public new string ToString()<br />

{<br />

return string.Format("(AfricanLion, male: {0}, weight: {1})",<br />

this.Male, this.Weight);

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!