2014-05-14 107 views
1

考慮我們必須通過繼承所有變種方法覆蓋

class Parent {  
} 

class Child extends Parent{ 
} 
  1. 如果Parent相關的兩類情景聲明與如下因素簽名的方法:

    public String method(Number n)//parent 1 
    

    我知道,在Child我可申報方式有以下 簽名(應覆蓋)

    public String method(Number n) // chilld 1_1 
    
  2. 但如果Parent包含以下特徵:

    public <T extends Number> String method(T t) //parent2 
    

    兒童可以通過下列簽名覆蓋它(2,分隔):

    public String method(Number n)//chilld 2_1 
    

    public<T extends Number> String method(T t)// chilld 2_2 
    

Ar e是否有其他變體用於覆蓋parent1或parent2?

+0

是的!在兒童我可以標記@Override – gstackoverflow

+0

我想孩子可以採取一個輸入類型不太具體(對象),從而覆蓋/掩蓋父呼叫。即public String方法(Object t) - 以及泛型類型的變體。 – FrobberOfBits

回答

1

如果你只是在尋找一個變種再怎麼以下 -

public String method(Number n) throws RuntimeException 

,或者

public <T extends Number> String method(T n) throws RuntimeException 

此外,其他的是不適用的情況下的String,因爲它是最終的,是否允許重寫方法返回父類中的返回類型的子類型。

+0

謝謝。只有運行時異常的變體可能嗎? – gstackoverflow

+0

'public String method(Number n)throws RuntimeException,SomeOtherException'等 –

+1

在檢查異常的情況下,它必須是相同的異常或父類中的某個子類,否則不允許。 –