将final关键字添加到inheritance/重写方法是否“可以”?

在Android中,我创建了一个扩展View的抽象类(我无法访问的Android类)。 抽象类会覆盖视图

 @Override protected final void onDraw(Canvas canvas) { if(conditions) return; // child classes should only draw if this class gives the ok subDraw(canvas); } protected abstract void subDraw(Canvas canvas); 

但是我在这里添加了final关键字。

关键是,我创建了一个抽象方法,子类应该使用而不是onDraw。 所以我阻止onDraw被任何进一步覆盖,它的工作原理。

我知道有一些设计可以让它变得更好,但是这种设计就像一个没有太多变化的魅力。 如果做上述操作在运行时或其他问题上有不必要的副作用,我的问题更为一般?

是的,从技术上讲,这是一个干净的解决方案。 如果您完全确定没有人可能想要更改此特定方法中的任何逻辑,您可以这样做。

此外,您必须记住,此方法必须包含尽可能少的逻辑,因为它不能被任何后代更改。 如果您认为此方法的大小会增加(不使用委托),请避免最终确定。