Sobes.tech
Junior — Middle

Este posibil să se instanțieze direct un obiect de protocol într-un limbaj de programare?

sobes.tech AI

Răspuns de la AI

În Swift (limbaj de programare pentru iOS), protocoalele descriu un set de cerințe (metode, proprietăți) pe care un tip trebuie să le implementeze. Nu se poate crea direct o instanță a protocolului, deoarece protocolul în sine nu conține implementare.

Cu toate acestea, dacă există o clasă sau structură care implementează protocolul, se poate crea o instanță a acestui tip și lucra cu ea printr-o referință la protocol.

Exemplu:

protocol Drawable {
    func draw()
}

class Circle: Drawable {
    func draw() {
        print("Desenează un cerc")
    }
}

let shape: Drawable = Circle() // creăm o instanță a clasei care implementează protocolul
shape.draw() // apelăm metoda protocolului

Dacă doriți să aveți un obiect care corespunde protocolului, dar nu doriți să creați o clasă concretă, puteți folosi tipuri de înveliș sau implementări anonime, dar nu există o instanță directă a protocolului.