Perbedaan Antara Virtual Dan Abstrak

Perbedaan Antara Virtual Dan Abstrak
Perbedaan Antara Virtual Dan Abstrak

Video: Perbedaan Antara Virtual Dan Abstrak

Video: Perbedaan Antara Virtual Dan Abstrak
Video: Perbedaan Antara Metode Abstrak dan Virtual dalam C# 2024, Mungkin
Anonim

Virtual vs Abstrak

Virtual dan Abstrak adalah dua kata kunci yang digunakan di sebagian besar bahasa pemrograman Berorientasi Objek (OO) seperti Java dan C #. Meskipun ada sedikit perbedaan dalam pengertiannya dalam bahasa yang berbeda, kata kunci Virtual dan Abstrak memberikan kesan implementasi parsial pada entitas yang dilampirkan.

Abstrak

Biasanya, kelas Abstrak, juga dikenal sebagai Kelas Dasar Abstrak (ABC), tidak dapat dibuat instance-nya (instance kelas itu tidak dapat dibuat). Jadi, kelas Abstrak hanya bermakna jika bahasa pemrograman mendukung pewarisan (kemampuan untuk membuat subclass dari memperluas kelas). Kelas abstrak biasanya mewakili konsep atau entitas abstrak dengan implementasi parsial atau tanpa implementasi. Oleh karena itu, kelas Abstrak bertindak sebagai kelas induk dari mana kelas anak diturunkan, sehingga kelas anak akan berbagi fitur yang tidak lengkap dari kelas induk dan fungsionalitas dapat ditambahkan untuk menyelesaikannya. Kelas abstrak mungkin berisi metode Abstrak. Subclass memperluas kelas abstrak dapat mengimplementasikan metode Abstrak (diwariskan) ini. Jika kelas anak mengimplementasikan semua metode Abstrak seperti itu, itu adalah kelas konkret. Tapi jika tidak,kelas anak juga menjadi kelas Abstrak. Apa artinya semua ini adalah, ketika programmer menominasikan kelas sebagai Abstrak, dia mengatakan bahwa kelas tersebut tidak akan lengkap dan akan memiliki elemen yang perlu diselesaikan oleh subkelas yang mewarisi. Ini adalah cara yang bagus untuk membuat kontrak antara dua pemrogram, yang menyederhanakan tugas dalam pengembangan perangkat lunak. Pemrogram, yang menulis kode untuk mewarisi, perlu mengikuti definisi metode dengan tepat (tetapi tentu saja dapat memiliki implementasinya sendiri). Di Java dan C #, kelas dan metode abstrak dideklarasikan menggunakan kata kunci Abstrak. Ini adalah cara yang bagus untuk membuat kontrak antara dua pemrogram, yang menyederhanakan tugas dalam pengembangan perangkat lunak. Pemrogram, yang menulis kode untuk mewarisi, perlu mengikuti definisi metode dengan tepat (tetapi tentu saja dapat memiliki implementasinya sendiri). Di Java dan C #, kelas dan metode abstrak dideklarasikan menggunakan kata kunci Abstrak. Ini adalah cara yang bagus untuk membuat kontrak antara dua programmer, yang menyederhanakan tugas-tugas dalam pengembangan perangkat lunak. Pemrogram, yang menulis kode untuk mewarisi, perlu mengikuti definisi metode dengan tepat (tetapi tentu saja dapat memiliki implementasinya sendiri). Di Java dan C #, kelas dan metode abstrak dideklarasikan menggunakan kata kunci Abstrak.

Virtual

Metode / fungsi virtual menyediakan kemampuan untuk mengganti perilakunya secara opsional dengan kelas yang mewarisi (menggunakan fungsi dengan tanda tangan yang sama). Konsep fungsi Virtual penting dalam skenario berikut. Misalkan sebuah kelas diturunkan oleh kelas turunan, maka setiap kali sebuah objek dari kelas turunan digunakan, itu bisa merujuk ke objek dari kelas dasar atau kelas turunan. Namun, perilaku pemanggilan metode bisa ambigu jika metode kelas dasar diganti. Jadi, untuk mengatasi ambiguitas ini, kata kunci Virtual digunakan. Jika metode ini ditandai Virtual, maka fungsi kelas turunan dipanggil (jika ada) atau fungsi kelas dasar akan dipanggil. Misalnya, di C ++, kata kunci Virtual digunakan persis untuk tujuan ini. Di C #, kata kunci Virtual digunakan dengan cara yang mirip, tetapi sebagai tambahan,penimpaan kata kunci harus digunakan untuk mengubah semua metode yang diganti. Tetapi di Java, tidak ada kata kunci Virtual yang eksplisit. Semua metode non-statis dianggap Virtual. Fungsi virtual tanpa badan disebut fungsi Virtual Murni. Di Java dan C #, metode Abstrak sebenarnya adalah Virtual Murni.

Perbedaan antara Virtual dan Abstrak

Meskipun Abstrak dan Virtual adalah dua kata kunci / konsep yang memberikan arti implementasi yang tidak lengkap ke entitas terkaitnya, keduanya memiliki perbedaan. Metode abstrak (yang harus didefinisikan di dalam kelas Abstrak) tidak memiliki implementasi sama sekali, sedangkan metode Virtual mungkin memiliki implementasi. Jika metode Abstrak diperpanjang dengan kelas konkret, semua metode Abstrak yang diwariskan harus diterapkan, sedangkan metode Virtual yang diwariskan mungkin atau tidak boleh diganti.

Direkomendasikan: