Sobes.tech
Junior

გთხოვთ, ისაუბროთ Swift პროგრამირების ენაში კლასების მემკვიდრეობის ჯაჭვზე.

sobes.tech AI

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

Swift კლასები უზრუნველყოფს მხოლოდ მემკვიდრეობას. თითოეული კლასი მემკვიდრეობას იღებს ერთ მშობელ კლასიდან, ქმნის ჰიერქიას. მემკვიდრეობის ჯაჭვი იწყება საწყის კლასიდან, რომელიც არაფრისგან მემკვიდრეობას იღებს, და ქვედა კლასების მეშვეობით გრძელდება.

მემკვიდრეობის თვისებები:

  • გადაწყვეტა (Overriding): ქვედა კლასი შეუძლია გადახედოს მშობელ კლასის მეთოდებს, თვისებებს და სუბსკრიპტებს. გამოიყენება override საკვანძო სიტყვა.
  • გადაწყვეტის აკრძალვა (Preventing Overrides): შესაძლებელია წევრის გადახედვის თავიდან აცილება, მითითებით final. მთელი კლასი შეიძლება გამოაცხადოს როგორც final.
  • მშობელ კლასთან წვდომა: ქვედა კლასი შეუძლია მიიღოს წვდომა მშობელ კლასის რეალიზებულ წევრებზე super საკვანძო სიტყვით. ეს სასარგებლოა მშობელ მეთოდის გამოძახების ან მშობელ თვისებაზე წვდომისთვის.

მაგალითი:

// საწყისი კლასი
class Vehicle {
    var currentSpeed = 0.0

    func makeNoise() {
        // ცარიელი რეალიზაცია
    }
}

// მშობელ კლასიდან მემკვიდრეობა
class Car: Vehicle {
    var numberOfDoors = 4

    // `makeNoise` მეთოდის გადახედვა
    override func makeNoise() {
        print("Beep beep")
    }
}

// `Car`-დან მემკვიდრეობა
class ElectricCar: Car {
    var batteryLevel = 100.0

    // ახალი თვისების დამატება
    let isElectric = true

    // `currentSpeed` თვისების გადახედვა
    override internal var currentSpeed: Double {
        didSet {
            if currentSpeed > 0 {
                print("ელექტრო მანქანა მოძრაობს")
            }
        }
    }
}

ამ მაგალითში:

  • Vehicle — საწყისი კლასი.
  • Car მემკვიდრეობას იღებს Vehicle-დან, დამატებულია numberOfDoors თვისება და გადახედულია makeNoise მეთოდი.
  • ElectricCar მემკვიდრეობას იღებს Car-დან, დამატებულია batteryLevel და isElectric თვისებები, და გადახედულია currentSpeed თვისება.

მემკვიდრეობის ჯაჭვი: Vehicle -> Car -> ElectricCar. თითოეული კლასი ამ ჯაჭვში აქვს წვდომა ყველა ღია (ან სხვა კონტექსტში ხელმისაწვდომი) წევრებზე ზემოთ მდგომი კლასებიდან.