Perbezaan antara maya dan abstrak

Perbezaan antara maya dan abstrak

Virtual vs Abstrak

Maya dan Abstrak adalah dua kata kunci yang digunakan dalam bahasa pengaturcaraan yang paling berorientasikan objek (OO) seperti Java dan C#. Walaupun terdapat sedikit perbezaan dalam apa yang dimaksudkan dalam bahasa yang berbeza, kedua -dua kata kunci maya dan abstrak memberikan rasa pelaksanaan separa kepada entiti yang dilampirkan.

Abstrak

Biasanya, kelas abstrak, juga dikenali sebagai kelas asas abstrak (ABC), tidak dapat ditandakan (contoh kelas itu tidak dapat dibuat). Oleh itu, kelas abstrak hanya bermakna jika bahasa pengaturcaraan menyokong warisan (keupayaan untuk membuat subkelas daripada memperluaskan kelas). Kelas abstrak biasanya mewakili konsep abstrak atau entiti dengan pelaksanaan separa atau tidak. Oleh itu, kelas abstrak bertindak sebagai kelas induk dari mana kelas kanak -kanak diperoleh, supaya kelas kanak -kanak akan berkongsi ciri -ciri yang tidak lengkap dari kelas induk dan fungsi dapat ditambah untuk menyelesaikannya. Kelas abstrak mungkin mengandungi kaedah abstrak. Subkelas Memperluas Kelas Abstrak Boleh Melaksanakan Kaedah Abstrak (Diwarisi). Sekiranya kelas kanak -kanak melaksanakan semua kaedah abstrak seperti itu, ia adalah kelas konkrit. Tetapi jika tidak, kelas kanak -kanak juga menjadi kelas abstrak. Apa maksudnya ialah, apabila pengaturcara menamakan kelas sebagai abstrak, dia mengatakan bahawa kelas akan tidak lengkap dan ia akan mempunyai unsur -unsur yang perlu diselesaikan oleh subkelas yang mewarisi. Ini adalah cara yang baik untuk membuat kontrak antara dua pengaturcara, yang memudahkan tugas dalam pembangunan perisian. Pengaturcara, yang menulis kod untuk mewarisi, perlu mengikuti definisi kaedah dengan tepat (tetapi tentu saja boleh mempunyai pelaksanaannya sendiri). Di Java dan C#, kelas dan kaedah abstrak diisytiharkan menggunakan kata kunci abstrak.

Maya

Kaedah/fungsi maya memberikan keupayaan untuk menimpa tingkah lakunya secara pilihan dengan kelas mewarisi (menggunakan fungsi dengan tandatangan yang sama). Konsep fungsi maya penting dalam senario berikut. Katakan kelas diperolehi oleh kelas kanak -kanak, maka apabila objek kelas yang diperoleh digunakan, ia boleh merujuk kepada objek kelas asas atau kelas yang diperolehi. Tetapi, tingkah laku panggilan kaedah boleh samar -samar jika kaedah kelas asas ditindih. Oleh itu, untuk menyelesaikan kekaburan ini, kata kunci maya digunakan. Sekiranya kaedah ditandakan maya, maka fungsi kelas yang diperolehi dipanggil (jika ada) atau fungsi kelas asas dipanggil. Sebagai contoh, dalam C ++, kata kunci maya digunakan tepat untuk tujuan ini. Dalam C#, kata kunci maya digunakan dengan cara yang sama, tetapi di samping itu, kata kunci yang menimpa harus digunakan untuk mengubah suai semua kaedah yang ditindas. Tetapi di Java, tidak ada kata kunci maya yang jelas. Semua kaedah tidak statik dianggap maya. Fungsi maya tanpa badan dipanggil fungsi maya murni. Di Java dan C#, kaedah abstrak sebenarnya maya maya.

Perbezaan antara maya dan abstrak

Walaupun abstrak dan maya adalah dua kata kunci/konsep yang memberikan makna pelaksanaan yang tidak lengkap kepada entiti yang berkaitan, mereka mempunyai perbezaan mereka. Kaedah abstrak (yang mesti ditakrifkan di dalam kelas abstrak) tidak mempunyai pelaksanaan sama sekali, sementara kaedah maya mungkin mempunyai pelaksanaan. Sekiranya kaedah abstrak dilanjutkan oleh kelas konkrit, semua kaedah abstrak yang diwarisi mesti dilaksanakan, sementara kaedah maya yang diwarisi mungkin atau mungkin tidak ditimpa.