1. Metode statis adalah jenis metode default. Mereka dipanggil seperti prosedur dan fungsi normal. Kompilator mengetahui alamat metode ini, sehingga ketika metode statis dipanggil, ia dapat secara statis menghubungkan informasi yang sedang berjalan ke dalam file yang dapat dieksekusi. , jadi metode statis adalah yang tercepat, tetapi tidak dapat ditimpa untuk mendukung polimorfisme.
2. Metode virtual dan metode statis dipanggil dengan cara yang sama. Karena metode virtual dapat ditimpa, kompiler tidak mengetahui alamat metode virtual tertentu ketika dipanggil dalam kode. Oleh karena itu, kompiler mencari alamat fungsi saat runtime dengan membuat tabel metode virtual (VMT). Semua metode virtual diproses melalui VMT pada saat runtime. Selain metode virtual yang ditentukan sendiri, tabel VMT suatu objek juga memiliki semua metode virtualnya. Oleh karena itu, metode virtual menggunakan lebih banyak memori daripada metode dinamis, namun dijalankan dengan relatif cepat.
3. Metode dinamis pada dasarnya mirip dengan metode virtual, hanya saja sistem ketinggiannya berbeda. Kompiler memberikan nomor unik untuk setiap metode dinamis dan menggunakan nomor ini serta alamat metode dinamis untuk membuat tabel metode dinamis (DMT). Berbeda dengan tabel VMT, hanya ada metode dinamis yang dideklarasikan dalam tabel DMT, dan metode ini memerlukan tabel DMT leluhur untuk mengakses metode dinamis lainnya. Oleh karena itu, metode dinamis menggunakan lebih sedikit memori dibandingkan metode virtual, namun eksekusinya lebih lambat karena mungkin harus mencari metode dinamis di DMT objek.
4. OP menggunakan overriding untuk membuat suatu metode menunjukkan perilaku yang berbeda di kelas turunan yang berbeda. Metode yang dapat di-override di OP adalah metode yang ditandai sebagai virtual atau dinamis saat dideklarasikan. Untuk mengganti suatu metode, gunakan override alih-alih virtual atau dinamis dalam deklarasi kelas turunan. Setelah menggunakan override, kompiler akan mengganti metode asli di VMT dengan metode baru, dan metode asli masih ada. Jika Anda menggunakan override untuk mendeklarasikan metode statis lagi, itu adalah override nyata, yang sepenuhnya tercakup dalam metode baru . Ganti metode yang sama di kelas leluhur.