Junior — Middle
შესაძლებელია თუ არა მონაცემთა კლასსა და სხვა კლასს შორის მემკვიდრეობა განსაზღვრა?
sobes.tech AI
პასუხი AI-სგან
Kotlin-да, маалымат კლასი (data class) სხვა კლასიდან მემკვიდრეობას მიიღებს, თუ ის final არაა (ანუ, ღიაა მემკვიდრეობისთვის). თუმცა, მონაცემთა კლასი ავტომატურად მემკვიდრეობს Any-დან და უნდა ჰქონდეს მინიმუმ ერთი პარამეტრი კონსტრუქტორში.
მნიშვნელოვანია:
- მონაცემთა კლასი არ უნდა იყოს
openანabstract. - მონაცემთა კლასიდან მემკვიდრეობა შესაძლებელია, მაგრამ თავად მონაცემთა კლასი არ უნდა იყოს მშობელი კლასი (ანუ, არ შეიძლება მემკვიდრეობა იყოს
data class-დან).
მაგალითი:
open class Person(val name: String)
data class Employee(val id: Int, val person: Person) : Person(person.name)
ასე რომ, მემკვიდრეობა მონაცემთა კლასსა და სხვა კლასს შორის შესაძლებელია, მაგრამ შეზღუდვებით, და ხშირად იყენებენ კომპოზიციას (ობიექტების ჩაშენებას) მემკვიდრეობის ნაცვლად მონაცემთა კლასებისთვის.