გთხოვთ, ისაუბროთ Objective-C ან Swift-ში კლასების მემკვიდრეობის ჯაჭვზე.
sobes.tech AI
პასუხი AI-სგან
Objective-C- ში თითოეული კლასი მემკვიდრეობით იღებს NSObject-დან (ან მის ქვესახეობიდან), რომელიც წარმოადგენს უმეტესობაშე ობიექტზე ორიენტირებული და არა-სტრინგული კლასების ძირითადი კლასი ფრეიმვორკში Foundation. NSObject უზრუნველყოფს ძირითადი ფუნქციონალობას, როგორიცაა მეხსიერების მართვა, ობიექტების აღწერა, თანხვედრის ტესტირება და ინტროსპექცია.
// Objective-C- ში კლასი ავტომატურად მიანიშნებს `NSObject`-დან მემკვიდრეობით, თუ სხვა არ არის მითითებული.
@interface MyClass : NSObject // აშკარა მემკვიდრეობა NSObject-დან.
// ...
@end
// თუ აშკარა მემკვიდრეობა არ არის, მაშინ ავტომატურად მემკვიდრეობით იღებს NSObject-ს.
@interface AnotherClass
// ...
@end
Swift- ში კლასები არ აქვთ ერთიანი ძირითადი კლასი, როგორც NSObject Objective-C- ში. კლასი შეიძლება მემკვიდრეობით მიიღოს სხვა კლასიდან, შექმნას ჰიერქია. თუ კლასი პირდაპირ სხვა კლასიდან არ მემკვიდრეობს, ის არის თავისი საკუთარი ჰიერქიის ძირითადი კლასი. თავსებადი Objective-C და Cocoa ფრეიმვორკებთან უზრუნველყოფილია კლასებით, რომლებიც мостავენ (bridged) Swift- და Objective-C- ს შორის, მაგალითად, Foundation- ის კლასებით.
// კლასი, რომელიც პირდაპირ მემკვიდრეობით არ იღებს - არის თავის ჰიერქიაში ძირითადი.
class MySwiftClass {
// ...
}
// კლასი, რომელიც მემკვიდრეობით იღებს სხვა Swift კლასიდან.
class AnotherSwiftClass: MySwiftClass {
// ...
}
// Swift კლასი, რომელიც მემკვიდრეობით იღებს Objective-C კლასს (მაგალითად, Foundation- დან).
import Foundation
class MyViewController: UIViewController { // UIViewController მემკვიდრეობით იღებს UIResponder-დან, რომელიც მემკვიდრეობით იღებს NSObject-დან
// ...
}
მემკვიდრეობის ჯაჭვი წარმოადგენს კლასების სერიას შვილიდან მშობელზე, საბოლოოდ კი ძირითადი კლასი (მომწოდებელი NSObject-დან Objective-C- ში ან ძირითადი კლასი Swift- ის ჰიერქიაში). ეს საშუალებას აძლევს შვილკლასებს გამოიყენონ და გადაფარონ მშობელკლასების თვისებები და მეთოდები.