C++에서 클래스 멤버 메서드는 기본적으로 가상이 아닙니다. 즉, 지정하여 가상으로 만들 수 있습니다.
반면에 Java에서 메소드는 기본적으로 가상이며 'final' 키워드를 사용하여 비가상으로 만들 수 있습니다.
예시
class base_class{
public void display_msg(){
System.out.println("The display_msg method of base class class");
}
}
class derived_class extends base_class{
public void display_msg(){
System.out.println("The display_msg of derived class called");
}
}
public class Main{
public static void main(String[] args){
base_class my_instance = new base_class();;
my_instance.display_msg();
}
} 출력
The display_msg method of base class class
'display_msg' 기능이 있는 'base_class'라는 클래스가 생성됩니다. 이 기능은 관련 메시지만 표시합니다. 'derived_class'라는 또 다른 함수는 'base_class'에서 상속됩니다. 이 클래스에는 관련 메시지를 표시하는 'display_msg'도 있습니다. Main이라는 다른 클래스에는 base_class의 인스턴스가 생성되는 기본 함수가 포함되어 있습니다. 이 인스턴스와 함께 'display_msg'가 호출되고 출력이 화면에 표시됩니다.