Perbedaan Utama: Metode abstrak adalah metode yang dideklarasikan tetapi tidak memiliki implementasi. Metode virtual digunakan untuk implementasi polimorfisme berbasis tipe. Kelas turunan memiliki fleksibilitas untuk mengimplementasikan kembali metode virtual kelas dasar dengan menggunakan kata kunci 'override'.
Sebagai contoh -
public class abstrak exampleAbstractClass
{
public void exampleabstractMethod ();
public void nonAbstractMethod ()
{
Console.WriteLine ("Implementasi didefinisikan dalam metode");
}
kelas normalNonAbstractClass: exampleAbstractClass
{
public override void exampleabstractMethod ()
{
Console.WriteLine ("Mengganti exampleabstractMethod dari class exampleAbstractClass");
}
}
Basis kelas
{
Uji virtual void publik ()
{
Console.WriteLine ("Base.Test");
}
}
class Berasal: Base
{
public override void Test ()
{
Console.WriteLine ("Derived.Test");
}
}
Metode virtual digunakan untuk implementasi polimorfisme berbasis tipe. Kelas turunan memiliki fleksibilitas untuk menerapkan kembali metode virtual kelas dasar dengan menggunakan kata kunci override. Baik virtual dan abstrak tidak dapat digunakan bersama dengan pengubah statis atau virtual atau menimpa.
Perbandingan antara Metode Virtual dan Abstrak:
Metode Virtual | Metode Abstrak | |
Definisi | Metode virtual digunakan untuk implementasi polimorfisme berbasis tipe. | Metode abstrak adalah metode yang dideklarasikan tetapi tidak memiliki implementasi. |
Pelaksanaan | Ya, bisa ada implementasinya | Tidak, tidak dapat memiliki implementasi apa pun |
Perlu diganti | Tidak wajib | Wajib |
Kata kunci yang digunakan untuk membedakannya dari jenis metode lain | Virtual | Abstrak |
Kelas | Kelas yang berisi metode virtual dapat digunakan. | Kelas yang berisi metode abstrak tidak bisa dipakai. Itu hanya bisa diwariskan. |
Cakupan | Ruang lingkup metode virtual hanya untuk anggota. | Ruang lingkup metode abstrak untuk anggota dan kelas. |
Metode yang akan dieksekusi (tipe kelas objek-basis) | Implementasi induk akan dipanggil hanya dalam kasus di mana tidak ada implementasi disediakan di kelas konkret. | Implementasi konkret |
Metode yang akan dieksekusi (tipe kelas objek-beton) | Implementasi konkret | Implementasi konkret |