Я хотел бы использовать абстракцию (из родительского класса) и интерфейс для одного и того же объекта без необходимости его приведения.
Я уже искал об этом, и кажется, что приведение является распространенным методомдля такого рода целей.
У меня есть программа, в которой Dog
расширяет Animal
реализует Friendly
Животное позволяет собаке yell()
, а Дружественный (интерфейс) позволяет ему hug()
Перед использованием FriendlyИнтерфейс), я обычно делал это:
Animal dog = new Dog();
dog.yell();
, но теперь, чтобы добавить интерфейс, мне нужно привести собаку в дружественный тип, чтобы он мог обнять ():
Animal dog = new Dog();
dog.yell();
((Friendly) dog).hug();
Есть ли лучший способ сделать это, так как мой учитель сказал мне, что кастинг, как правило, плохая идея.