Swift 5.9中如何正确继承泛型类?
Swift中继承泛型类的正确方式
在Swift中,继承泛型类时必须明确父类的类型参数,具体有两种实现方式:
1. 子类本身作为泛型类,传递泛型参数给父类
如果希望子类保留泛型特性,需要先在子类上声明泛型参数,再将该参数传递给父类。示例代码:
class A<T> {} class B<T>: A<T> {}
这样子类B就具备了泛型能力,实例化时可以指定具体类型,比如let b = B<String>()。
2. 子类指定具体类型参数给父类
如果子类不需要泛型特性,可以直接给父类指定一个具体的类型,这样子类就成为普通类。示例代码:
class A<T> {} class B: A<Int> {}
此时B继承的是A<Int>,实例化时直接用let b = B()即可。
错误原因说明
- 第一种写法
class B : A {}报错,是因为Swift要求泛型类必须通过<...>指定具体类型参数才能被继承,不能直接使用泛型类的原始名称。 - 第二种写法
class B : A<T> {}报错,是因为T没有在子类B的作用域中声明,Swift无法识别这个类型参数。
内容的提问来源于stack exchange,提问作者Runsva
相关产品推荐
相关产品推荐

