Интересует ваше мнение. Допустим, имеется базовый класс и дочерний класс, переопределяющий его методы. Оба эти класса могут реализовать определённый интерфейс. Какой из двух вы выберете для реализации? И самое главное почему? Вот пример на C# для ясности: Code: public Interface IA { void Method A(); } Вариант 1: Code: public abstract Class A : IA { public abstract void Method A(); } public Class B : A { public override void Method A() { } } Вариант 2: Code: public abstract Class A { public abstract void Method A(); } public Class B : A, IA { public override void Method A() { } }
в таком случае, да. но я скорее использовал бы что-то вроде этого Code: void foo(IA ia) { // } [B]IA[/B] a =new B(); foo(a); в этом то и смысл инерфейса. и тогда ответ снова неоднозначен. @all: ещё будут мнения?
Почитай книгу Троелсена "Язык программирования C#2008 и платформа .NET 3.5" В ней как раз описывается эта тема.
читал его c# 2005 .net 3.0. думаю, они не сильно отличаются. не помню такого примера. да и как бы всю книгу ворошить ради одного примера - немного геморно. если можно в кратце, что говорилось об этом примере?
Вариант 2... Это чисто удача, что попали в метод MethodA. Это не естественная ситуация. У вас на каком-то уровне приложения МОЖЕТ возникнуть объект типа A! Но использовать его в методе foo вы сможете, только через приведение типов. И даже так вы не гарантируете, что вы всегда сможете привести, а это лишняя проверка.