Sobes.tech
Junior — Middle

Közvetlenül példányosítható egy protokoll objektum a programozási nyelvben?

sobes.tech MI

Válasz az MI-től

Swiftben (iOS programozási nyelv) a protokollok egy olyan követelményhalmazt írnak le (módszerek, tulajdonságok), amelyet egy típusnak meg kell valósítania. Nem lehet közvetlenül példányt létrehozni a protokollból, mivel a protokoll önmagában nem tartalmaz megvalósítást.

Azonban, ha van egy osztály vagy szerkezet, amely megvalósítja a protokollt, akkor létrehozhatunk egy példányt ebből a típusból, és a protokoll hivatkozásán keresztül dolgozhatunk vele.

Példa:

protocol Drawable {
    func draw()
}

class Circle: Drawable {
    func draw() {
        print("Kör rajzolása")
    }
}

let shape: Drawable = Circle() // példány létrehozása a protokollt megvalósító osztályból
shape.draw() // a protokoll metódusának hívása

Ha olyan objektumra van szükség, amely megfelel a protokollnak, de nem akarunk konkrét osztályt létrehozni, akkor használhatunk csomagoló típusokat vagy névtelen megvalósításokat, de közvetlen példányosítás a protokollból nem lehetséges.