Sobes.tech
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ó.