Зв'язаний з іншими 3 ось частина 4 , дуже цікаві речі про віртуальні методи C# Це дуже цікава річ (на мою думку це так!)... Тут є розділ на " цитатах " і віртуальних методах... Частина Java має значення SO!
Білл Веннерс: Що ви маєте на увазі під вхідним і вихідним контрактом?
Anders Hejlsberg: Вхідний контракт - це те, що я використовую для виклику методу. За його допомогою я можу розмірковувати про те, що я повинен робити перед тим, як викликати у цей метод, і про те, що сталося після повернення методу. Вихідний контракт - це те, що я використовую для заміни методу. Якщо ви поглянете на більшість програм API, насправді, це дуже погано для документування того, що ви повинні робити, коли ви перевизначите віртуальний метод: Що таке invants перед тим, як ви зателефонуєте? Що ж повинно бути правдою після? Які методи ви не можете викликати з вашої реалізації? І так далі. На мою думку, дуже небезпечно вважати, що типово всі способи мають і вхідні, і в' язні аспекти. Небезпечно довіряти будь- кому, коли ви пишете документацію про перевизначення і те, що невиключається.
Я можу показати вам дуже реальну світову проблему з версіями, яку ми зараз бачимо з досвіду разом з Java. Кожного разу, коли вони пересилають нову версію бібліотек класу Java, виникає розрив. Кожного разу, коли вони представляють новий метод у базовому класі, якщо хтось у похідному класі має метод з такою ж назвою, то метод тепер є перевизначеним, якщо він має інший тип повернення, він вже не компілюється. Проблема полягає в тому, що Java, а також C++ не вловлюють значення програміста з повагою до віртуального.
© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.