Дараах, хэт ачаалах хоёрын ялгаа

Дараах, хэт ачаалах хоёрын ялгаа
Дараах, хэт ачаалах хоёрын ялгаа

Видео: Дараах, хэт ачаалах хоёрын ялгаа

Видео: Дараах, хэт ачаалах хоёрын ялгаа
Видео: IPO-д орж хувьцаа хэрхэн авах вэ? Номинал данс, ҮЦТХ дансны ялгаа 2024, Арваннэгдүгээр
Anonim

Дараах ба хэт ачаалал

Арга Overriding and method Overloading нь зарим програмчлалын хэлэнд байдаг хоёр ойлголт/техник/ онцлог юм. Энэ хоёр үзэл баримтлал нь программист ижил нэртэй аргуудын өөр өөр хэрэгжилтийг хангах боломжийг олгодог. Аргын давамгайлал нь программист өөрийн супер анги дотор аль хэдийн тодорхойлсон аргын дэд анги доторх өөр хэрэгжилтийг хангах боломжийг олгодог. Аргын хэт ачаалал нь программист ижил нэртэй (нэг анги дотор) олон аргуудыг өөр өөр хэрэгжүүлэлтээр хангах боломжийг олгодог.

Дараах гэж юу вэ?

Дээр дурьдсанчлан анги нь объект хандалтат програмчлалын хэл дээр супер анги эсвэл эх ангиа өргөтгөх боломжтой. Хүүхдийн анги нь өөрийн гэсэн аргуудтай байж болно, эсвэл өөрийн эцэг ангид (эсвэл түүний эцэг эхийн аль нэг анги) аль хэдийн тодорхойлсон аргуудын өөрийн хэрэгжүүлэлттэй байж болно. Тиймээс сүүлийнх нь тохиолдвол үүнийг аргыг давах гэж нэрлэдэг. Өөрөөр хэлбэл, хэрэв хүүхэд анги нь өөрийн эх ангиудынхаа аль нэгэнд тодорхойлсон аргатай ижил гарын үсэг болон буцах төрөлтэй аргад хэрэгжилтийг хангадаг бол уг аргыг хүүхдийн ангийн хэрэгжүүлэлтээр хүчингүй болгосон (солигдсон) гэж хэлнэ.. Тиймээс, хэрэв ангид дарагдсан арга байгаа бол ажиллах үеийн систем нь аль аргын хэрэгжилтийг ашиглахыг шийдэх ёстой. Энэ асуудлыг яг дуудаж буй объектын төрлийг харснаар шийдэгддэг. Хэрэв эцэг ангийн объект нь дарагдсан аргыг дуудаж байвал эх анги дахь хэрэгжилтийг ашиглана. Үүний нэгэн адил, хэрэв энэ нь ашиглагдаж буй хүүхдийн ангийн объект юм бол хүүхдийн ангийн хэрэгжилтийг ашиглана. Java, Eifell, C++, Python зэрэг орчин үеийн програмчлалын хэлүүд нь аргыг хүчингүй болгох боломжийг олгодог.

Хэт ачаалал гэж юу вэ?

Аргын хэт ачаалал нь ижил нэртэй боловч өөр өөр оролт, гаралтын төрлүүдтэй нэгээс олон аргыг үүсгэхийн тулд зарим програмчлалын хэлээр хангадаг онцлог юм. Java, C, C++ болон VB. NET зэрэг орчин үеийн програмчлалын хэлүүдэд энэ функцийг ашиглах боломжтой. Та ижил нэртэй боловч өөр аргын гарын үсэг эсвэл өөр буцах төрөл (эсвэл хоёуланг нь) өөр аргыг үүсгэснээр аргыг хэт ачаалж болно. Жишээлбэл, хэрэв танд нэг ангид method1(type1 t1) болон method1(type2 t2) байгаа бол тэдгээр нь хэт ачаалалтай байна. Дараа нь систем дуудагдах үед алийг нь гүйцэтгэхээ шийдэх хэрэгтэй болно. Энэ ялгааг тухайн аргад дамжуулсан параметр(үүд)-ийн төрлийг харснаар хийгддэг. Хэрэв аргумент 1 төрлийн бол эхний хэрэгжүүлэлтийг дуудна, харин 2 төрлийн бол хоёр дахь хэрэгжүүлэлтийг дуудна.

Дараах болон хэт ачаалах хоёрын ялгаа нь юу вэ?

Хэдийгээр өөр өөр хэрэгжүүлэлт бүхий аргыг хангахын тулд аргын хэт ачааллыг ашиглах аргыг ашигладаг боловч эдгээр хоёр ойлголт/техникийн хооронд үндсэн ялгаа бий. Юуны өмнө, аргын хэт ачааллын сэдэв нь нэг ангид үлддэг бол аргын хэт ачааллын субъектууд үргэлж өөр өөр ангид үлддэг. Энэ нь зөвхөн удамших боломжийг олгодог объект хандалтат програмчлалын хэл дээр дарах боломжтой, харин хэт ачааллыг объект хандалтат бус хэл дээр хийх боломжтой гэсэн үг юм. Өөрөөр хэлбэл, та супер ангид байгаа аргыг хүчингүй болгосон ч өөрийн ангийнхаа аргыг хэт ачаална.

Өөр нэг ялгаа нь дарагдсан аргууд нь ижил аргын нэр, аргын гарын үсэг, буцаах төрөлтэй байдаг боловч хэт ачаалагдсан аргууд нь гарын үсэг эсвэл буцаах төрлөөр ялгаатай байх ёстой (нэр нь ижил байх ёстой). Хоёр дарагдсан аргын хооронд ялгахын тулд ашигласан аргуудын id-г дуудахад ашигладаг объектын яг төрлийг, харин хэт ачаалалтай хоёр аргыг ялгахад параметрийн төрлийг ашигладаг. Өөр нэг гол ялгаа нь хэт ачааллыг хөрвүүлэх үед шийддэг бол дарах нь ажиллах үед шийдэгддэг.

Зөвлөмж болгож буй: