Maya vs Abstrak
Maya dan Abstrak adalah dua kata kunci yang digunakan dalam kebanyakan bahasa pengaturcaraan Object Oriented (OO) seperti Java dan C #. Walaupun terdapat sedikit perbezaan dalam maksudnya dalam bahasa yang berbeza, kedua-dua kata kunci Maya dan Abstrak memberikan rasa pelaksanaan separa kepada entiti yang dilampirkannya.
Abstrak
Biasanya, kelas Abstrak, juga dikenali sebagai Kelas Dasar Abstrak (ABC), tidak dapat dijadikan contoh (contoh kelas itu tidak dapat dibuat). Oleh itu, kelas Abstrak hanya bermakna jika bahasa pengaturcaraan menyokong pewarisan (kemampuan untuk membuat subkelas dari memanjangkan kelas). Kelas abstrak biasanya mewakili konsep abstrak atau entiti dengan pelaksanaan sebahagian atau tidak. Oleh itu, kelas Abstrak bertindak sebagai kelas induk dari mana kelas anak berasal, sehingga kelas anak akan berkongsi ciri-ciri kelas induk yang tidak lengkap dan fungsi dapat ditambahkan untuk menyelesaikannya. Kelas abstrak mungkin mengandungi kaedah Abstrak. Subkelas yang meluaskan kelas abstrak boleh melaksanakan kaedah Abstrak (diwarisi) ini. Sekiranya kelas kanak-kanak menerapkan semua kaedah Abstrak seperti itu, itu adalah kelas konkrit. Tetapi jika tidak,kelas kanak-kanak juga menjadi kelas Abstrak. Apa maksud semua ini ialah, apabila pengaturcara mencalonkan kelas sebagai Abstrak, dia mengatakan bahawa kelas itu tidak lengkap dan 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 diwarisi, perlu mengikuti definisi kaedah dengan tepat (tetapi tentu saja dapat melaksanakannya sendiri). Di Java dan C #, kelas dan kaedah abstrak dinyatakan menggunakan kata kunci Abstrak. Ini adalah cara yang baik untuk membuat kontrak antara dua pengaturcara, yang memudahkan tugas dalam pembangunan perisian. Pengaturcara, yang menulis kod untuk diwarisi, perlu mengikuti definisi kaedah dengan tepat (tetapi tentu saja dapat melaksanakannya sendiri). Di Java dan C #, kelas dan kaedah abstrak dinyatakan menggunakan kata kunci Abstrak. Ini adalah cara yang baik untuk membuat kontrak antara dua pengaturcara, yang memudahkan tugas dalam pembangunan perisian. Pengaturcara, yang menulis kod untuk diwarisi, perlu mengikuti definisi kaedah dengan tepat (tetapi tentu saja dapat melaksanakannya sendiri). Di Java dan C #, kelas dan kaedah abstrak dinyatakan menggunakan kata kunci Abstrak.
Maya
Kaedah / fungsi maya memberikan kemampuan untuk secara tidak sengaja mengatasi tingkah lakunya oleh kelas yang mewarisi (menggunakan fungsi dengan tanda tangan yang sama). Konsep fungsi Maya adalah penting dalam senario berikut. Andaikan kelas diturunkan oleh kelas kanak-kanak, maka setiap kali objek kelas turunan digunakan, kelas boleh merujuk kepada objek kelas asas atau kelas turunan. Tetapi, tingkah laku panggilan kaedah boleh samar-samar jika kaedah kelas asas diganti. Oleh itu, untuk menyelesaikan kekaburan ini, kata kunci maya digunakan. Sekiranya kaedah tersebut ditandakan sebagai Maya, maka fungsi kelas turunan disebut (jika ada) atau fungsi kelas asas disebut. Sebagai contoh, dalam C ++, kata kunci maya digunakan tepat untuk tujuan ini. Dalam C #, kata kunci Maya digunakan dengan cara yang serupa, tetapi sebagai tambahan,kata kunci penggantian harus digunakan untuk mengubahsuai semua kaedah yang diganti. Tetapi di Java, tidak ada kata kunci maya eksplisit. Semua kaedah bukan statik dianggap Maya. Fungsi maya tanpa badan dipanggil fungsi Murni Murni. Di Java dan C #, kaedah Abstrak sebenarnya adalah Murni Murni.
Perbezaan antara Maya dan Abstrak
Walaupun Abstrak dan Maya adalah dua kata kunci / konsep yang memberi makna pelaksanaan yang tidak lengkap kepada entiti yang berkaitan, mereka mempunyai perbezaan. Kaedah abstrak (yang mesti ditentukan di dalam kelas Abstrak) sama sekali tidak mempunyai pelaksanaan, sementara kaedah Maya mungkin mempunyai pelaksanaan. Sekiranya kaedah Abstrak diperluas oleh kelas konkrit, semua kaedah Abstrak yang diwarisi mesti dilaksanakan, sementara kaedah Maya yang diwarisi mungkin atau tidak akan diganti.