Java继承或静态方法

use*_*263 2 java inheritance static

有一个名为的抽象类AbstractAgent,目前有27个类正在扩展这个类.

我已经开始开发一些代理,我的所有5个代理都在扩展AbstractAgent类.

现在我发现getFilePath()我的所有5个代理都有一个复制粘贴的东西.然后我意识到在现有的27个班级中也有很多班级都有这种方法.我认为将此方法放在基类中AbstractAgent并让每个人都使用此方法是个好主意.但我不希望所有已经存在的类来改变自己的代码,我已经改变了方法的名称,以便向前任何人都可以使用它.

进行我的代码审查的人建议我不要触摸AbstractAgent类,因为它已经被现有客户端使用,并且这个方法是一些实用程序类.

我不相信他的论点.任何人都想投入他们的想法.

Osc*_*mez 5

在这种情况下,因为AbstractAgent该类已被其他类使用,并且正如您所提到的,并非所有类都实现此方法,那么您确实应该不更改AbstractAgent.但是AbstractAgent,您可以扩展另一个名为say的抽象子类AbstractAgentWithFilePath,它声明了您想要的其他方法,然后让这些类扩展AbstractAgentWithFilePath该类.