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.