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. თითოეული კლასი ამ ჯაჭვში აქვს წვდომა ყველა ღია (ან სხვა კონტექსტში ხელმისაწვდომი) წევრებზე ზემოთ მდგომი კლასებიდან.