В объектной ориентации не имеет значения, какие «данные» (то есть частное состояние) есть у каждого объекта. Имеет значение только то, какое поведение они предоставляют, даже в дереве наследования.
Итак, если под "свойством" вы подразумеваете состояние c публикации или частное состояние, доступное через публикацию c getter, вы уже в определенной степени оставили объектную ориентацию. Обсуждая, что правильно с точки зрения oop уже спорно.
1006 * Если вы имеете в виду, что в качестве частного государства, с некоторым потенциалом поведения совместно, то вам, возможно, потребуется
делегация . То есть и
Cat
, и
TinyDog
реализуют некоторый интерфейс, описывающий желаемое поведение, а затем реализуют его в некотором классе, который оба делегируют (то есть содержат). К сожалению, это не поддерживается изначально в Java (например, в Kotlin), поэтому ему нужен некоторый шаблон.