为什么switch或if else语句不被认为是多态的?

时间:2018-08-30 04:00:44

标签: java oop

每个关于堆栈溢出的答案都提供了有关如何更换开关或是否具有多态性的信息,但是 开关(如果有的话)的构造也有助于在上下文和输入方面提供对象的不同行为。

为什么不将switch视为多态的一部分。

2 个答案:

答案 0 :(得分:4)

当我们必须检查对象的类型以做出一些逻辑或行为决定时,有条件的变为一种代码味道。不论是if / else块堆栈还是switch语句都无所谓。这违反了开闭原则

开放封闭原则规定,实体(类,模块,函数等)应开放以进行扩展,而封闭以进行修改。这意味着不允许这些实体对其源代码进行更改。

这可以通过抽象和多态来实现。

条件多态性的优点

  1. 与其询问一个对象的状态,然后根据此状态执行操作,不如简单地告诉该对象它需要做什么,然后让它自己决定如何做,就容易得多。
  2. 删除重复的代码。您摆脱了许多几乎相同的条件。
  3. 如果您需要添加新的执行变体,则只需添加一个新的子类,而无需触及现有代码(开放式/封闭式原理)。

答案 1 :(得分:1)

多态性的概念允许对象保留其父类的行为和属性。进一步说明herehere

ifelseswitch是过程代码构造。

两者没有共同之处。

编辑:谢谢@Ted Hopp,更正了我的帖子。