gpt4 book ai didi

Java - 抽象类和子类的二进制兼容性

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:46:29 24 4
gpt4 key购买 nike

在Java中,我定义了一个抽象类,里面既有具体的方法,也有抽象的方法,而且必须由第三方开发者独立子类化。只是为了确定:我是否可以对抽象类进行任何更改,使其与它们的类源代码兼容但二进制不兼容?换句话说:在他们编译了他们的子类之后,我可以改变抽象类 - 除了例如向其中添加一个抽象方法或从中删除一个由子类调用的 protected 方法,这些子类当然是源代码不兼容的——以一种可能迫使他们重新编译其子类的方式?

最佳答案

如果现在更改您的系统还为时不晚,我建议您这样做。覆盖通常不是自定义功能的好方法,因为它非常脆弱。例如,如果您稍后使用您的客户使用过的方法名称(他们现在无意中自动覆盖),那么覆盖可能会完全破坏您的类的不变量。通常更好的提供定制的方法是给你的客户一个接口(interface),这个接口(interface)仅限于定制的行为,然后你有一个完全具体的类,它依赖于这个接口(interface)的一个实例,并在需要时适本地委托(delegate)给接口(interface)使用定制的行为。这样,您的代码和客户的代码就完全分离了,并且不会相互干扰。

关于Java - 抽象类和子类的二进制兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2837936/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com