В чем разница между отношениями IS -A и HAS-A в Java?

Я новичок в JAVA и только начал изучать отношения IS-A и HAS-A, но не смог многого понять. Я хочу представить, как эти два понятия отличаются и когда нам следует использовать IS-A и HAS-A?

2 ответа

Решение

Отношения IS-A - это наследство. Классы, которые наследуются, называются подклассами или дочерними классами. С другой стороны, HAS - отношения это композиция

В ООП ИС - отношения полностью наследственные. Это означает, что дочерний класс является типом родительского класса. Например, яблоко - это фрукт. Таким образом, вы продлите фрукты, чтобы получить яблоко.

class Apple extends Fruit{
.
.
}

С другой стороны, композиция означает создание экземпляров, которые имеют ссылки на другие объекты. Например, в комнате есть стол. Таким образом, вы создадите классную комнату, а затем в этом классе создадите экземпляр таблицы типов.

class Room{

:
Table table = new Table ();
:
:
}

Отношение HAS-A - это динамическая (во время выполнения) привязка, а наследование - статическая (во время компиляции). Если вы просто хотите повторно использовать код и знаете, что они не одинаковые, используйте композицию. Например, вы не можете печь из кухни. Кухня имеет духовку. Когда вы чувствуете, что есть естественные отношения, как Apple, это наследство использования фруктов.

Фу-бар

public class Foo extends Bar{}

Фу имеет бар

public class Foo {
    private Bar bar;
}
Другие вопросы по тегам