Тартиби дар омузиши объектӣ дар чӣ фарқият дорад: механизм дарҷ кардан ё меросгирӣ?
sobes.tech AI
Ҷавоб аз AI
Дар оёдии объектӣ (ва махсусан дар Go) мерос ва ҷойгиркунӣ ду роҳҳои такрории истифодаи кодианд, аммо онҳо дар механика ва семантика фарқ мекунанд.
-
Мерос механизми аст, ки дар он як синф (ё навъ) дигарро васеъ мекунад, хусусиятҳо ва усулҳои онро мерос мегирад ва метавонад онҳоро такрор кунад. Дар Go мероси классикӣ вуҷуд надорад.
-
Ҷойгиркунӣ (embedding) дар Go вақте аст, ки як навъ навъи дигарро ҳамчун майдони бе ном дохил мекунад. Ин имкон медиҳад, ки усулҳои навъи ҷойгиршуда "мерос" гирифта шаванд, аммо бидуни ҳиерархияи қатъии мерос. Ҷойгиркунӣ композиция ва делегатсияро ба ҷои мерос таъмин мекунад.
Масалан, дар Go барои ҷойгиркунӣ:
type Animal struct {
Name string
}
func (a Animal) Speak() string {
return "..."
}
type Dog struct {
Animal // ҷойгиркунӣ
}
func (d Dog) Speak() string {
return "Woof!"
}
Ин ҷо, Dog Animal-ро ҷойгир мекунад ва метавонад усулҳои онро истифода барад, аммо инчунин метавонад онҳоро такрор кунад.
Бинобар ин, ҷойгиркунӣ дар Go роҳи бештар флексибл ва содда барои такрории истифодаи коди нисбат ба мероси классикӣ мебошад.