Java中的动态继承



Java中是否存在动态继承?

为了澄清,我所说的动态继承是指:我可以指定在运行时从哪个类继承某个类吗?(A继承自{X|X∈{P,T,Q}})

我只是想知道,如果我需要实现动物类,我的选择是什么,它将有以下子类:飞行动物、行走动物、游泳动物等。

同时,我需要将动物细分为人类和非人类,它们的行为会略有不同。我想做的是从Animal派生出Humans和NonHumans,然后从Walkable派生出Animal,等等。我想决定在运行时是哪一个(假设动物可以行走或飞行)。

在运行时从哪个类继承某个类

没有。Java是一种具有编译时类型检查功能的编译语言。然而,可以使用类似BCEL的字节码操作库在运行时创建字节码;根据BCEL主页,一个有趣的应用程序是在运行时从头开始创建类

解决此类情况的正确方法通常是(de-)组合委派(这些是要搜索的关键字)。

例如,您的类可以包含这些类的对象,并简单地使用它而不是继承。

interface Engine {}
class Diesel implements Engine {}
class Electric implements Engine {}
class Car /* NOT extends Diesel/Electric */ {
  Enigne engine; /* delegate or composition pattern */
}

最新更新