例如,我有两个班级。
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
答案 0 :(得分:0)
我会使用一种template method pattern。
基本上,您可以覆盖由public方法调用的受保护方法,而不是使用可覆盖的公共方法。这允许您在调用重写方法之前执行所需的任何检查。
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
实现的情况下完成这项工作,但有两个缺点: