以下代码导致错误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"))
但在尝试将override
添加到B
中的方法AT<T>
时,收到错误Method does not override any method from its superclass
。
答案 0 :(得分:1)
由于参数类型不同,因此无法覆盖该函数,因此,一个函数不能作为另一个函数。此外,如果已存在,则不能使用相同的方法签名。唯一的解决方案是更改名称,或者为超类使用与参数相同的类型。此外,您无法隐藏超类中的方法,但如果通过覆盖它来使用它,则可能抛出异常。