Junior — Middle
Lehet-e kiterjesztési protokollt deklarálni egy nyilatkozatban, megadva egy másik protokollt, hogy örökölje annak tulajdonságait?
sobes.tech MI
Válasz az MI-től
Swiftben a protokollok örökölhetnek más protokollok tulajdonságokat és metódusokat. Azonban az extension protokollokat (extension protocols) nem külön deklarálják — a kiterjesztéseket meglévő protokollokra alkalmazzák.
Ha azt szeretnéd, hogy egy protokoll egy másikból örököljön, ezt kifejezetten deklarálod:
protocol A {
func methodA()
}
protocol B: A {
func methodB()
}
Itt a B protokoll örökli az A protokollt, és mindkét metódus implementálását megköveteli.
A protokoll kiterjesztések (extension) lehetővé teszik metódusok implementációjának hozzáadását, de nem deklarálhatnak új protokollt örökléssel. Ezért egy másik protokoll tulajdonságait tartalmazó extension protokoll csak normál protokoll örökléssel, nem kiterjesztésekkel deklarálható.