Java 从super子方法返回
我有这样的想法:Java 从super子方法返回,java,super,Java,Super,我有这样的想法: class SuperClass { public void onClick(){ if(disabled) return; } } class SubClass extends SuperClass { public void onClick(){ super.onClick(); System.out.println("Clicked"); } } class SuperClass { public void onClick(
class SuperClass {
public void onClick(){
if(disabled) return;
}
}
class SubClass extends SuperClass {
public void onClick(){
super.onClick();
System.out.println("Clicked");
}
}
class SuperClass {
public void onClick(){
if(disabled) return;
processClick();
}
protected void processClick() {
}
}
class SubClass extends SuperClass {
protected void processClick(){
super.processClick();
System.out.println("Clicked");
}
}
每次单击按钮时,都会输出“单击”
如果disabled为true,并且不想在每个子类中添加额外的行,我希望子类onClick()不起作用。我该怎么做呢?您应该使用
也许是这样的:
class SuperClass {
public void onClick(){
if(disabled) return;
}
}
class SubClass extends SuperClass {
public void onClick(){
super.onClick();
System.out.println("Clicked");
}
}
class SuperClass {
public void onClick(){
if(disabled) return;
processClick();
}
protected void processClick() {
}
}
class SubClass extends SuperClass {
protected void processClick(){
super.processClick();
System.out.println("Clicked");
}
}
委托给其他方法:
class SuperClass {
public void onClick(){
if(!disabled) handleOnClick();
}
public void handleOnClick(){
}
}
class SubClass extends SuperClass {
public void handleOnClick(){
System.out.println("Clicked");
}
}
无论如何,你不能这样。超级对象中的函数调用无权阻止子类中的方法执行。你要找的可能是一种模式。你可以吃这样的东西
abstract class SuperClass {
public void onClick(){
if(disabled) return;
doClick();
}
protected abstract void doClick();
}
class SubClass extends SuperClass {
protected void doClick(){
System.out.println("Clicked");
}
}
您在哪里/如何设置禁用状态?@DRCOLOSOS在超级类中。这不是问题所在。问题是,当我从超类中的方法返回时,它只从超方法返回,而不是从子类中的方法返回。