Sobes.tech
Junior — Middle

კლასის ნიმუშის შექმნისას კონსტრუქტორები და ინიციალიზატორები რა წესით ხორციელდება?

sobes.tech AI

პასუხი AI-სგან

iOS-ში (მაგალითად, Swift-ში) კლასის მაგალითის შექმნისას, შესრულების წესია შემდეგი:

  1. პირველ რიგში, კლასში გამოცხადებული ყველა თვისების ინიციალიზატორები (თუ მათ დეფოლტ მნიშვნელობები აქვთ) შესრულდება.
  2. შემდეგ, თავად კლასის კონსტრუქტორი (ინიციალიზატორი) იძახება.
  3. თუ კლასი მემკვიდრეობით იღებს, პირველ რიგში იძახება სუპერკლასის ინიციალიზატორები, შემდეგ კი ქვესკლასის.

Swift-ის მაგალითი:

class Parent {
    var name: String = "Parent"
    init() {
        print("Parent init")
    }
}

class Child: Parent {
    var age: Int = 10
    override init() {
        super.init() // პირველ რიგში სუპერკლასის ინიციალიზატორი
        print("Child init")
    }
}

let c = Child()
// გამოყვანა:
// Parent init
// Child init

ამიტომ, პირველ რიგში ინიციალიზდებიან თვისებები, შემდეგ იძახება სუპერკლასის ინიციალიზატორი და ბოლოს ქვესკლასის.