2013-10-21 33 views

回答

1

這取決於上下文。如果你這樣做:

public SubclassConstructor() { 
    super("foo"); 
} 

這是將這些參數傳遞給父類的構造函數。如果你不喜歡這樣寫道:

public void subclassMethod() { 
    super.methodInBoth("foo"); 
} 

@Overrides 
public void methodInBoth(String var) { 

} 

這是調用父類的方法孩子的方法,而不是。而且,爲了鞏固教訓,如果你這樣做是這樣的:

public void subclassMethod() { 
    this.methodInBoth("foo"); 
} 

@Overrides 
public void methodInBoth(String var) { 

} 

它會叫孩子的方法父的方法,而不是。如果你只是打電話methodInBoth("foo");,那也會叫小孩的。

0

超級意味着你正在訪問無論是你從超,而不是你是從調用它的子類訪問。

class GetANumber { 

    public int getNumber() { 
     return 1; 
    } 

} 

class MultiplyANumber extends GetANumber { 

    @Override public int getNumber() { 
     return super.getNumber() * 2; 
    } 

} 

System.out.println(new GetANumber().getNumber()); 
System.out.println(new MultiplyANumber().getNumber()); 

輸出

1 
2