2014-12-04 25 views
2

下面的代碼導致錯誤Ambiguous use of 'B'類方法時:錯誤具有與同名的一般類非通用超類

public class A { 
    public class func B<T>(t: T) -> T { 
     return t 
    } 

} 
public class AT<T> : A { 
    public class func B<T1>(t: T1) -> T1 { 
     return t 
    } 
} 
println(AT<Int>.B("a")) 

但是,當試圖在AT<T>添加override到方法B,得到了錯誤Method does not override any method from its superclass

回答

1

由於參數類型不同,所以不能重寫函數,因此一個函數不能作爲另一個函數。另外,如果已經存在,則不能使用相同的方法簽名。唯一的解決方案是更改名稱,或使用與超類相同的參數類型。另外,您不能在超類中隱藏方法,但如果通過覆蓋它來使用,則可以引發異常。

相關問題