java - 如何在不扩展类的情况下实现动态多态

标签 java oop design-patterns polymorphism

我在一次采访中被问到如何在不扩展类的情况下实现动态多态性。如何做到这一点?

最佳答案

Decorator design pattern利用 encapsulation就是你要找的。

通过继承实现多态性:

class Cat {
  void meow() {
    // meow...
  }
}
class Lion extends Cat {
}

通过封装实现多态性(装饰器模式):

interface Cat {
  void meow();      
}
class Lion implements Cat {
  private Cat cat;
  void meow() {
    this.cat.meow();
  }
}

ps。有关装饰器的更多信息:http://www.yegor256.com/2015/02/26/composable-decorators.html

关于java - 如何在不扩展类的情况下实现动态多态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12347007/

相关文章:

.net - .Net 中的单例模式是不可能的吗?

java - scala:为什么 1/0 是算术异常但 1.0/0.0 = Double.Infinity

C# Java HashMap 等价物

java - Facelets异常 : The entity name must immediately follow the '&' in the entity reference

c++ - 如何强制子相同的虚函数首先调用其父虚函数

java - 在构造函数方法中返回子类

design-patterns - 策略模式 VS 装饰模式

java - 错误: incompatible types: boolean cannot be converted to List<String>

c++ - 为什么我的编译器将字符串视为 const char[]?

php - 有没有办法在 php 中定义全局或标准函数,可以从任何地方调用而不包含文件