Junior
როგორ მუშაობს მემკვიდრეობა Swift ენისთვის?
sobes.tech AI
პასუხი AI-სგან
Swift-да мирас алу класслар аша жүзеге асырыла. Беренче класс башка классның үзмәләрен һәм ысулларын мирас итеп ала ала.
- Нигез класс: Башка класслар мирас итеп алган класс. Башка класстан мирас алмый.
- Үзгәреш класс (мирас алучы): Нигез классдан мирас итеп алган класс. Яңа үзенчәлекләр һәм ысуллар өсти ала, шулай ук мирас итеп алынганнарны яңадан билгели ала.
Төп моментлар:
- Swift бары тик бердәм мирасне хуплый (класс бер генә классдан мирас ала ала).
- Классны билгеләү өчен
classачкыч сүзе кулланыла. - Мирас класс исеменнән соң ике нокта
:кулланыла, аннан соң нигез класс исеме килә. - ысуллар һәм үзенчәлекләр
overrideачкыч сүзе белән яңадан билгеләнә. finalачкыч сүзе класс, ысул яки үзенчәлек алдыннан куела, мирас алуны тыя.
// Нигез класс
class Vehicle {
var currentSpeed = 0.0
func accelerate() {
currentSpeed += 10
}
func description() -> String {
return "traveling at \(currentSpeed) mph"
}
}
// Үзгәреш класс
class Car: Vehicle {
var gear = 1
// ысулны яңадан билгеләү
override func accelerate() {
super.accelerate() // нигез класс ысулын чакыру
gear += 1
}
// Яңа ысул өстәү
func changeGear(to newGear: Int) {
gear = newGear
}
// Үзенчәлекне яңадан билгеләү (хисаплау)
override func description() -> String {
return super.description() + " in gear \(gear)"
}
}
// Тыйылган класс
final class Motorcycle: Vehicle {
// Үз үзенчәлекләре һәм ысуллары булырга мөмкин, ләкин мирас алу тыела
}
Мирас алуның өстенлекләре:
- Кодны кабат куллану: Мирас алучылар нигез класс функцияләрен кулланалар.
- Полиформизм: төрле мирас класслары объектлары белән эшләү мөмкинлеге, нигез класс аша.
- Киңәйтү мөмкинлеге: Яңа функциональлекне мирас алучыларда өстәү, нигез классны үзгәртмичә.
Мирас алуның кимчелекләре:
- Катгый бәйләнеш: Нигез класстагы үзгәрешләр мирас алучыларга тәэсир итә ала.
- Ромб мәсьәләсе (күп мирас алу телләрендә): Swiftта юк, бердәм мираска бәйле.
- Иерархиянең катлаулылыгы: тирән иерархияләр аңлау һәм тотрыклылык өчен кыен булырга мөмкин.
Swift мурас алуны композициягә караганда өстен күрә, бу гибкость һәм кодны яңадан куллану өчен. Ләкин, мирас алу иерархияләрен төзү һәм ООП принципларын тормышка ашыру өчен мөһим инструмент булып кала.