首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >避免在观察者方法中使用instanceOf

避免在观察者方法中使用instanceOf
EN

Stack Overflow用户
提问于 2013-06-16 01:32:06
回答 3查看 234关注 0票数 2
代码语言:javascript
运行
复制
public class Human {
     public void drown(Animal animal) {
          if (animal instanceOf Fish) {
              return;
          } else {
              animal.die();
          }
     }
}

public abstract class LandAnimal extends Animal{...}
public class Tiger extends LandAnimal{...}

public abstract class Fish extends Animal {...}
public class Trout extends Fish {...}

我想过要添加一个方法

代码语言:javascript
运行
复制
public abstract boolean drownable() {...}

在Animal类中,但我不能访问Animal类的代码。据我所知,使用instanceOf被认为是糟糕的OOP实践。在这种情况下,如何避免使用instanceOf?谢谢。

EN

Stack Overflow用户

发布于 2013-06-16 01:43:37

方法可以根据它们的参数进行重载。您可以使用两种不同的方法:

代码语言:javascript
运行
复制
public void drown(Fish f) {
  return;
}

public void drown(LandAnimal a) {
  a.drown();
}

然而,应该注意的是,这使得确定某些动物是否会被淹没是Human类的责任,正如其他答案所示,这是有争议的。

票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17126168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档