[英]How to block call overridden method from Child
例如,我有两个班。
public class PActivity {
...
@Override
public boolean OnEventSocket(PMSocketEvent a_iEvent)
...
handled = OnEventSocket(...);
}
}
第二类:
public class PMenu extends PActivity {
@Override
public boolean OnEventSocket(PMSocketEvent a_iEvent)
{
...
}
}
如何阻止第二类的调用方法?
有时我想从基类中调用方法OnEventSocket
。
我有很多类似PMenu
类,所以我必须在PActivity
进行更改
我将使用一种模板方法模式 。
本质上,您没有覆盖可覆盖的公共方法,而是覆盖了由公共方法调用的受保护方法。 这使您可以在调用覆盖的方法之前进行所需的任何检查。
public class PActivity {
...
public final boolean onEventSocket(args)
{
if (method_should_be_called)
{
eventSocketImpl(args);
}
}
protected boolean eventSocketImpl(args)
{
// default behaviour
}
}
public class PMenu extends PActivity {
@Override
protected boolean eventSocketImpl(args)
{
// overridden behaviour
}
}
您应该能够在不更改任何PMenu
实现的情况下完成这项工作,但有两个缺点:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.