Просто думать о нем, как имеющий «это-а» или «имеет-A» отношения
В этом примере человеческого «является разновидностью» животных, и он может наследует различные данные класс животных. Поэтому используется Наследование:
abstract class Animal {
private String name;
public String getName(){
return name;
}
abstract int getLegCount();
}
class Dog extends Animal{
public int getLegCount(){
return 4;
}
}
class Human extends Animal{
public int getLegCount(){
return 2;
}
}
Состав имеет смысл, если один объект является владельцем другого объекта. Как объект Human, владеющий объектом Dog. Таким образом, в приведенном ниже примере человеческого объекта «имеет-а» Dog объект
class Dog{
private String name;
}
class Human{
private Dog pet;
}
надежда, что помогло ...
>> Если вы программировали на языке, который позволяет подклассифицировать без подтипирования, вы имеете в виду большинство языков сценариев? – Howard
Мне нравится, что автор вопроса показывает, что он хотел получить ответ, противоположный тому, что было задано. Нам было предложено предоставить встречный пример, где наследование было бы более уместным. Тем не менее, он должен отказаться и принять еще один пример, когда наследство снова отсасывает. Это тайна. ООП доминирует над миром, но его главная особенность, наследование, никогда не должна использоваться в пользу старой хорошей структурной композиции! Может быть, мы должны предпочесть условные обозначения над полиморфизмом также потому, что полиморфизм достигается через (всегда) плохое наследование в java? – Val
Может быть, Java - это мусор, потому что на основе таких вещей, как Integer, расширяет Number и ByteInputStream расширяет InputStream, и каждый объект получает из объекта блокировку, хеш и методы равенства. Очевидно, что если наследование ничего плохого, то java ошибочно с самого начала. – Val