Sobes.tech
Junior

Da li je klasa open javna ili privatna?

sobes.tech АИ

Одговор од АИ

Klasa open je javna. Razlika u odnosu na jednostavnu public je u tome što klase i članovi klasa deklarisani kao open mogu biti nasledjeni i prepisani van modula u kojem su definisani. public klase su dostupne za korišćenje van modula, ali ne mogu biti nasledjeni ili prepisani osim ako nisu označeni kao open.

Nivoi pristupa u Swift-u:

  • open: Najviši nivo pristupa. Dostupan iz bilo kog modula i može biti nasledjen i prepisan.
  • public: Dostupan iz bilo kog modula, ali ne može biti nasledjen ili prepisan van modula.
  • internal: Podrazumevani nivo pristupa. Dostupan samo unutar jednog modula.
  • fileprivate: Dostupan samo unutar fajla u kojem je definisan.
  • private: Najniži nivo pristupa. Dostupan samo unutar deklaracije u kojoj je definisan.

Primer:

// Deklaracija `open` klase u ModulesA.swift
open class OpenClass {
    open func openMethod() {
        print("Ovo je open metoda.")
    }
}

// Upotreba u ModulesB.swift (drugi modul)
import ModulesA

class MyClass: OpenClass { // Nasleđivanje je dozvoljeno
    override func openMethod() { // Prepisivanje je dozvoljeno
        super.openMethod()
        print("Ovo je prepisana open metoda.")
    }
}
// Deklaracija javne klase u ModulesA.swift
public class PublicClass {
    public func publicMethod() {
        print("Ovo je javni metod.")
    }
}

// Upotreba u ModulesB.swift (drugi modul)
import ModulesA

let instance = PublicClass()
instance.publicMethod() // Dozvoljena upotreba

// class MyOtherClass: PublicClass { // GREŠKA: Javni klas ne može biti podklasa van svog modula
//     override func publicMethod() { // GREŠKA: Javni metod ne može biti prepisan van modula
//         super.publicMethod()
//     }
// }