Can someone explain why my java program is not behaving same as C++?
==================================
C++ program
==================================
#include <stdio.h>
class base
{
public:
void func1(){
func2();
}
void func2(){
printf(" I am in base:func2() \n");
}
};
class derived : public base
{
public:
void func1(){
base::func1();
}
void func2(){
printf(" I am in derived:func2() \n");
}
};
void main()
{
derived *d = new derived();
d->func1();
}
==========================================================================
Result:
I am in base:func2()
==========================================================================
==================================
Java program
==================================
public class Test
{
public static class base{
public void func1(){
func2();
}
public void func2(){
System.out.println(" I am in base:func2() \n");
}
}
static class derived extends base{
public void func1(){
super.func1();
}
public void func2(){
System.out.println(" I am in derived:func2() \n");
}
};
public static void main(String[] args){
derived d = new derived();
d.func1();
}
}
===========================================================================
Result:
I am in derived:func2()
===========================================================================