gpt4 book ai didi

java - 在同一对象上使用抽象和接口(interface),而无需对其进行强制转换

转载 作者:行者123 更新时间:2023-12-02 10:26:42 25 4
gpt4 key购买 nike

我想在同一个对象上使用抽象(来自母类)和接口(interface),而无需对其进行强制转换。

我已经搜索过它,似乎强制转换是实现这种目的的常用方法。

我有一个程序,其中 Dog 扩展 Animal 实现 Friendly

动物让狗yell(),友好(界面)让他hug()在使用Friendly(Interface)之前,我曾经这样做过:

Animal dog = new Dog();
dog.yell();

但是现在,要添加界面,我必须将狗转换为像这样的友好类型,以便他可以拥抱():

Animal dog = new Dog();
dog.yell();
((Friendly) dog).hug();

有没有更好的方法来做到这一点,因为我的老师告诉我,选角通常是一个坏主意。

最佳答案

如果您需要避免强制转换,则必须使用 Dog 作为 dog 变量的类型:

Dog dog = new Dog();
dog.yell();
dog.hug();

但是,有了这个,您就不会针对 FriendlyAnimal 接口(interface)进行编程,而理想情况下,您应该在正确使用抽象时执行这些操作。如果您必须在代码中将 dog 声明为 AnimalFriendly,就像这样,那么您正在使用抽象出于错误的原因。

...my teacher told me that casting was usually a bad idea.

选角是一件没有人喜欢做的事情,但每个人在必要的时候都必须这样做。

关于java - 在同一对象上使用抽象和接口(interface),而无需对其进行强制转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53896076/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com