Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用自定义类替换超类_Java_Inheritance - Fatal编程技术网

Java 用自定义类替换超类

Java 用自定义类替换超类,java,inheritance,Java,Inheritance,情况如下: class1 class2 extends class1 class3 extends class1 class4 extends class1 ... 我想用一个自定义的类替换class1,并且继承自class1的所有类都会自动继承自新类,而无需“重新声明”该类 class1 class1a extends class1 class2 extends class1 -> automatically extends class1a class3 extends class1

情况如下:

class1
class2 extends class1
class3 extends class1
class4 extends class1
...
我想用一个自定义的类替换class1,并且继承自class1的所有类都会自动继承自新类,而无需“重新声明”该类

class1
class1a extends class1

class2 extends class1 -> automatically extends class1a
class3 extends class1 -> automatically extends class1a
class4 extends class1 -> automatically extends class1a
...
这就像GWT的替换为标记一样。有可能吗

有可能吗


如果不修改源代码,或使用某种源代码预处理或字节码工程,就不能这样做。

如果您想在源代码级别执行此操作,可以按如下方式执行

首先,通过使用IDE的重构功能,将
class1
重命名为所需的类
classaa
,这就是所有类将自动更改为扩展
classaa
的方式


其次,创建在上一步中重命名的类
class1
(内容为classaa),并交换类
class1
classaa

的内容(手动,使用复制粘贴),如果class1想要更改为classaa的所有子类,我不明白为什么要保留class1。如果不是,那么肯定有一些类扩展了class1。因为class1及其所有子类都是某个库/框架的一部分。我只想给这个超类添加一些小功能,这样每个子类都会自动拥有这些功能,当然,不需要编辑整个库就可以搜索子类,而不需要编辑整个库。您只需编辑
class1
即可添加功能。@WilliamAnthony-您想添加什么样的小功能,以及如何使用它们(在class2、class3中,?)。它是否只是您创建的对象使用的新函数,还是要更改库中已有的方法?@guillaumegirod vitouchkina很抱歉这么晚才发表评论。我添加了几个字段和一些新方法,还有一个从父类中隐藏的方法。我像往常一样使用它们:InstanceOffClass2.newmethod(…)class1及其所有子类都是某些库/框架的一部分。因此,从源代码级别更改它们很不方便。