在Java中阻止运行时的方法覆盖
> A类有方法x()
> B类继承A并覆盖x() > C类继承B并覆盖x() 我想创建一个类lib,它将扩展Activity类并覆盖处理Android中后退按钮的方法(以及更多方法).我希望开发人员像我一样扩展我的类并继续使用他的活动类,但要强制他调用方法的超级. 知道B类如何防止其x方法在运行时被覆盖? (我不想在B级中完成x) 更新: 好的,让我试着解释一下我想要实现的目标 – 我想创建一个类lib,它将扩展Activity类并覆盖处理Android中后退按钮的方法(以及更多方法).我希望开发人员像我一样扩展我的类并继续使用他的活动类,但要强制他调用方法的超级.如果他不这样做,我就麻烦了. 解决方法
一种解决方案是让你的方法最终,但让它调用你声明为抽象的第二种方法.然后让其他开发人员编写该抽象方法的实现. 例如,您的代码可能如下所示: public final void method() { // do your stuff // ... // call the method that the other developer wrote doMethod(); } protected abstract void doMethod(); 无论谁添加必须在方法结束时调用的功能,那么必须实现抽象方法以扩展您的类并编译其代码: protected void doMethod() { // do more stuff } 然后你会像现在一样继续调用method(). (但请记住,这不会阻止其他人直接调用doMethod(),因此您仍需要清楚地记录API.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |