Отношения «А» и «Вроде А», что означают каждый из них и чем они отличаются?

Сначала пример для обсуждения:

class Foo
{
    // Attributes:
    int attribute1, attribute2;

    // Methods:
    virtual void Foo1()
    {   /* With or without Implementation   */  }
    virtual void Foo2()
    {   /* Also with or without Implementation */ }
};

class ExactDuplicate: Foo   // No New Attributes or Methods
{   
    virtual void Foo1()
    {   /* A new Implementation */  }

    // Also there might be new Implementations to other methods
};

class ExtraMethods: Foo     // Having New Methods
{
    virtual void Foo3()
    {   /* Implementation   */  }
};

class ExtraAttributes: Foo  // Having New Attributes
{
    int attribute3;
};

У меня была дискуссия - с моим учителем - о "это"а"это какотношения и чем они отличаются.

Мое мнение (что я читаю где-то, я не могу вспомнить) это то, что "это«связь между родительским классом и дочерним классом, который наследуется от него, и не зависит от добавления новых методов или атрибутов, поэтому любой экземпляр из дочернего класса»это«Родительский класс, в приведенном выше примере, каждыйExactDuplicate, ExtraMethods, или жеExtraAttributes "это" Foo, В то время как "это как"связь между двумя дочерними классами, унаследованными от одного и того же родительского класса, в приведенном выше примере каждыйExactDuplicate "как"каждыйExtraMethods или жеExtraAttributesи наоборот.

Мнение моего учителя это былоэто«связь между Родительским классом и только дочерними классами, которые не добавляют никаких дополнительных методов или атрибутов, поэтому в приведенном выше примере есть только один»это" отношения междуFoo а такжеExactDuplicate, В то время как"Это как A" связь между Родительским классом и Дочерними классами, которые добавляют дополнительные методы или атрибуты, поэтому в приведенном выше примере есть "это как" отношения междуFoo и каждый изExtraMethods а такжеExtraAttributes.

Я думаю, что "это«отношения, как определено моим учителем, не очень полезны, потому что в большинстве случаев нет причин менять реализацию, если ничего не добавлено. Это точка.Car "НЕ как" Vehicle, это на самом делеэто" Vehicleв то время какVan "это как" Car, поскольку оба ассоциируют некоторые характеристики.

Так что правильно и почему?Я был бы очень признателен, объясняя.

Кроме того, если мнение моего учителя является верным, делает ли добавление только атрибутов отношения "это как"отношения, или это требует добавления новых методов, чтобы стать"это как«отношения» и что (если существует) отношения между дочерними классами.

Надеюсь, мой квест является ясным и понятным.

Любая помощь будет высоко ценится :)

Ответы на вопрос(1)

Ваш ответ на вопрос