Могу ли я создать подкласс класса с обобщениями без определения общего?

#swift

#swift

Вопрос:

До сих пор мне удавалось создавать подкласс A, определяя только общий тип как String или любой другой тип:

 protocol Protocol {}

extension String : Protocol {}

class A<T:Protocol> {}

class B : A<String> {}
  

Должен ли я указывать универсальный тип или я могу просто наследовать его без указания?

Ответ №1:

Если вы хотите сделать свой B класс также универсальным, вам следует ограничить B для протокола, который является или наследуется от Protocol , а затем использовать этот общий параметр для ограничения A

 class B<T: Protocol>: A<T> {}
  

 protocol P: Protocol {}
class B<T:P>: A<T> {}