Sobes.tech
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)

ასე რომ, მემკვიდრეობა მონაცემთა კლასსა და სხვა კლასს შორის შესაძლებელია, მაგრამ შეზღუდვებით, და ხშირად იყენებენ კომპოზიციას (ობიექტების ჩაშენებას) მემკვიდრეობის ნაცვლად მონაცემთა კლასებისთვის.