说,我有一个现有的代码,看起来有点像这样:
public class MyClass {
private AnotherClass obj;
// ... (class implementation)
public final getObj() { return obj; // It is this simple }
}
该类在库中实现,其版本由许多不同的代码库使用。
我想从final
方法定义中删除getObj()
。我知道这个方法将不再是inlined。
还有什么其他可能的副作用可以将final
关键字从getObj()
中移除给现有用户?
正如@Khelwood评论的那样:
当使用final关键字声明方法时,它被称为final方法,并且不能被覆盖。我们必须使用final关键字声明方法,我们需要在所有派生类中遵循相同的实现。
因此,如果删除final
关键字,任何实现类都可以覆盖此方法功能(如@Khelwood建议,最好知道为什么在删除它之前将其声明为final)。
来自您的来源:
可以内联的方法包括静态,私有或最终方法,但如果可以确定它们未被覆盖,则还包括公共方法。
内联是一个最小化开销的过程,并且根据循环和调用的数量来内联方法。
final
关键字用于定义只能分配一次的实体。与方法一起使用时,无法覆盖它们。
因此删除它意味着只有你可以将该变量分配给另一个对象,如果它是一个方法,它们可以在实现接口或类继承时被覆盖,没有其他副作用!