Junior — Middle
კლასის ნიმუშის შექმნისას კონსტრუქტორები და ინიციალიზატორები რა წესით ხორციელდება?
sobes.tech AI
პასუხი AI-სგან
iOS-ში (მაგალითად, Swift-ში) კლასის მაგალითის შექმნისას, შესრულების წესია შემდეგი:
- პირველ რიგში, კლასში გამოცხადებული ყველა თვისების ინიციალიზატორები (თუ მათ დეფოლტ მნიშვნელობები აქვთ) შესრულდება.
- შემდეგ, თავად კლასის კონსტრუქტორი (ინიციალიზატორი) იძახება.
- თუ კლასი მემკვიდრეობით იღებს, პირველ რიგში იძახება სუპერკლასის ინიციალიზატორები, შემდეგ კი ქვესკლასის.
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
ამიტომ, პირველ რიგში ინიციალიზდებიან თვისებები, შემდეგ იძახება სუპერკლასის ინიციალიზატორი და ბოლოს ქვესკლასის.