Виртуал болон хийсвэр хоорондын ялгаа

Виртуал болон хийсвэр хоорондын ялгаа
Виртуал болон хийсвэр хоорондын ялгаа

Видео: Виртуал болон хийсвэр хоорондын ялгаа

Видео: Виртуал болон хийсвэр хоорондын ялгаа
Видео: Таобао болон Alipay дээр бүртгэл үүсгэх, картаа холбох 2024, Долдугаар сарын
Anonim

Виртуал ба хийсвэр

Virtual болон Abstract нь Java, C зэрэг Объект хандалтат (OO) програмчлалын хэлэнд хэрэглэгддэг хоёр түлхүүр үг юм. Хэдийгээр өөр өөр хэл дээрх утга нь бага зэрэг ялгаатай боловч Виртуал болон Хийсвэр түлхүүр үгс хоёулаа хавсаргасан нэгжүүдэд хэсэгчилсэн хэрэгжилтийн мэдрэмжийг өгдөг.

Хийсвэр

Ерөнхийдөө хийсвэр үндсэн ангиуд (ABC) гэгддэг хийсвэр ангиудыг үүсгэх боломжгүй (тухайн ангийн жишээг үүсгэх боломжгүй). Тиймээс, хийсвэр ангиуд нь зөвхөн програмчлалын хэл нь өв залгамжлалыг дэмждэг (анги өргөтгөхөөс дэд анги үүсгэх чадвар) байх нь утга учиртай. Хийсвэр ангиуд нь ихэвчлэн хэсэгчилсэн эсвэл огт хэрэгждэггүй хийсвэр ойлголт эсвэл нэгжийг төлөөлдөг. Иймд Abstract ангиуд нь хүүхдийн анги үүсгэсэн эцэг эхийн үүргийг гүйцэтгэдэг бөгөөд ингэснээр хүүхэд анги нь эцэг ангийн бүрэн бус шинж чанаруудыг хуваалцах бөгөөд тэдгээрийг дуусгахын тулд функцийг нэмж болно. Хийсвэр ангиуд нь хийсвэр аргуудыг агуулж болно. Хийсвэр ангийг өргөтгөх дэд ангиуд нь эдгээр (удамшсан) хийсвэр аргуудыг хэрэгжүүлж болно. Хүүхдийн анги ийм бүх хийсвэр аргуудыг хэрэгжүүлдэг бол энэ нь тодорхой анги юм. Тэгэхгүй бол хүүхдийн анги мөн хийсвэр анги болно. Энэ бүхэн нь юу гэсэн үг вэ гэвэл программист нэг ангиудыг хийсвэрээр нэр дэвшүүлэх үед тэр анги бүрэн бус байх бөгөөд удамшлын дэд ангиудад бөглөх шаардлагатай элементүүдтэй болно гэж хэлж байна. Энэ нь хоёр программистын хооронд гэрээ байгуулах сайхан арга бөгөөд програм хангамж боловсруулах ажлыг хялбаршуулдаг. Өв залгамжлах код бичдэг програмист нь аргын тодорхойлолтыг яг таг дагаж мөрдөх шаардлагатай (гэхдээ мэдээж хэрэг өөрийн гэсэн хэрэгжилттэй байж болно). Java болон C хэл дээр Abstract анги, аргуудыг Abstract түлхүүр үг ашиглан зарласан.

Виртуал

Виртуал аргууд/функцууд нь удамшлын ангид (ижил гарын үсэгтэй функцийг ашиглан) өөрийн зан төлөвийг хүчингүй болгох боломжийг олгодог. Виртуал функцийн тухай ойлголт нь дараах тохиолдолд чухал юм. Анги нь хүүхэд ангиас үүссэн гэж бодъё, тэгвэл үүсмэл ангийн объектыг ашиглах бүрд энэ нь үндсэн ангийн объект эсвэл үүсмэл ангид хандаж болно. Гэхдээ үндсэн ангийн аргуудыг дарсан тохиолдолд аргын дуудлагын үйлдэл нь хоёрдмол утгатай байж болно. Тиймээс, энэ ойлгомжгүй байдлыг арилгахын тулд Virtual түлхүүр үг ашигладаг. Хэрэв аргыг Virtual гэж тэмдэглэсэн бол үүсмэл ангийн функцийг (хэрэв байгаа бол) эсвэл үндсэн ангийн функцийг дуудна. Жишээлбэл, C++ хэл дээр Virtual түлхүүр үгийг яг энэ зорилгоор ашигладаг. C хэл дээр Виртуал түлхүүр үгийг ижил төстэй байдлаар ашигладаг, гэхдээ үүнээс гадна бүх дарагдсан аргуудыг өөрчлөхийн тулд override түлхүүр үгийг ашиглах хэрэгтэй. Гэхдээ Java хэл дээр тодорхой Virtual түлхүүр үг байдаггүй. Бүх статик бус аргуудыг Виртуал гэж үздэг. Ямар ч биегүй виртуал функцийг цэвэр виртуал функц гэж нэрлэдэг. Java болон C хэл дээр хийсвэр аргууд нь үнэндээ цэвэр виртуаль юм.

Виртуал болон хийсвэр хоорондын ялгаа

Хэдийгээр Хийсвэр болон Виртуал нь холбогдох нэгжүүдэд бүрэн бус хэрэгжилтийн утгыг илэрхийлдэг хоёр түлхүүр үг/үзэл баримтлал боловч тэдгээрийн ялгаа бий. Хийсвэр аргууд (Хийсвэр ангиудын дотор тодорхойлогдох ёстой) нь огт хэрэгжүүлэлтгүй байдаг бол Виртуал аргууд нь хэрэгжилттэй байж болно. Хэрэв хийсвэр аргуудыг тодорхой ангиар өргөтгөсөн бол удамшсан бүх хийсвэр аргуудыг хэрэгжүүлэх ёстой бөгөөд удамших Виртуал аргуудыг хүчингүй болгож болно.

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