Re[2]: Когда я говорил...
От: Abyx Россия  
Дата: 18.06.12 18:19
Оценка: -1
Здравствуйте, Пофигист, Вы писали:

П>Здравствуйте, о_О, Вы писали:


о_О>>Воскресный вброс на хабрэ. Ничего сверх, исключительно для ознакомления


П>

П>Когда я говорил, что нельзя платить тысячи долларов тем, кто не знает, чем абстрактный класс отличается от интерфейса, вы продолжали им платить. Теперь у нас все зарабатывают тысячи долларов, но х*р его знает, чем абстрактный класс отличается от интерфейса.

П>Я дико извиняюсь за свою дремучесть, но может кто разъяснит на пальцах мне, сипиписту, чем же у вас явистов и шарпистов так уж принципиально отличаются абстрактный класс от интерфейса? Понаплодили, блин, сущностей зачем-то.

я тоже пишу на С++, но знаю чем абстрактный класс отличается от интерфейса.
более того, язык тут ни при чем, это базовые понятия ОО-подхода (в Си тоже можно применять классы (абстрактные) и интерфейсы).

собственно отличие состоит в возможности владения объектом.

class IFoo
{
public:
    virtual void doSomething() = 0;

protected:
    ~IFoo() {}
};

это интерфейс.
мы не можем владеть объектом с интерфейсом IFoo, т.е. мы не можем использовать smart_owning_ptr<IFoo> (или сделать delete fooPtr

class AFoo
{
public:
    virtual void doSomething() = 0;

    virtual ~AFoo() {}
};

это абстрактный класс.
мы можем владеть объектами абстрактного класса AFoo, т.е. мы можем использовать smart_owning_ptr<AFoo> (или сделать delete fooPtr

в качестве дополнительного материала можно почитать про interface (!) segregation principle, и заодно подумать о
class IDestructible { public: virtual ~IDestructible() {} };
In Zen We Trust
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.