Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Hành vi ảo mặc định: C++ so với Java


Trong C++, hàm thành viên mặc định là non-virtual. Muốn đa hình thì phải khai báo virtual. Trong Java, phương thức mặc định là virtual; dùng final để ngăn ghi đè.

Ví dụ C++ (non-virtual mặc định)

#include <iostream>
using namespace std;
class Base { public: void s() { cout << "In Base\n"; } };
class Derived : public Base { public: void s() { cout << "In Derived\n"; } };
int main() {
    Derived d; Base &b = d; b.s(); // Gọi Base::s() do non-virtual
    return 0;
}

Kết quả C++

In Base

Ví dụ Java (virtual mặc định)

class Base { public void s() { System.out.println("In Base"); } }
class Derived extends Base { public void s() { System.out.println("In Derived"); } }
public class Main {
    public static void main(String[] args) {
        Base b = new Derived(); b.s(); // Gọi Derived::s() do virtual mặc định
    }
}

Kết quả Java

In Derived