[Homework] КПК - QualityClasses - {4} Inheritance and Polymorphism - автоматично извикване на ToString
Здравейте,
По принцип реших задачата, но ендо нещо не ми е ясно и ме гложди любопитството. Имаме неформатирания клас LocalCourse
В теста като зададем примерно LocalCourse course = new LocalCourse("Database");
После имам ConsoleWriteLine(course) и се стрингосва както трябва, дори без да му задам .ToString() изрично.
След това обаче имаме преработен клас LocalCourse:
който наследява Course:
Тук вече като задам ConsoleWriteLine(course) ми изписва само InheritanceAndPolymorphism.OffsiteCourse (името на проекта и класа). Като задам ConsoleWriteLine(course.ToString()) го принти както трябва. И ми е любопитно защо се получава така.
Много странно е направено така с virtual. Аз като овъррайдвам метода винаги почвам с override и VS ми дава веднага опциите; обикновено са само 3-те основни.
В случая това virtual омазва приоритета, на лекция го обясниха - при овъррайдване се вика метода на най-конкретния клас. Virtual явно работи като new и го презаписва.
VS 2014 дава warning, че не си написал 'new', защото по този начин скриваш базовия метод. Това важи и за пропъртитата.
Ясно, мерси. Явно в това ми е била грешката.