我所有的大学四年我一直在使用public,并想知道的区别public,private和protected?
还有什么可以static做而不是什么都没有?
我想装饰(装饰器设计模式)一个公共基类,但我需要装饰的方法受到保护.见例子:
public class AbstractActor {
public void act(){...} //Delegates its actions to doAct() based on some internal logic
protected void doAct(){...}
}
Run Code Online (Sandbox Code Playgroud)
子类意味着重写doAct(),我需要在那里注入一些功能.我可以覆盖doAct,但我的装饰器类无法访问正在装饰的实例上的受保护方法doAct().例:
public class ActorDecorator extends AbstractActor {
AbstractActor decoratedInstance;
public ActorDecorator(AbstractActor decoratedInstance){
this.decoratedInstance = decoratedInstance;
}
protected void doAct(){
//Inject my code
decoratedInstance.doAct(); //Can't call protected method of decoratedInstance
}
//Other decorator methods
}
Run Code Online (Sandbox Code Playgroud)
这个挑战有解决方案吗?