//类Super及Sub定义如下: public class Super { private void f() { System.out.println("Super.f()"); } public void g() { f(); } public void k() { f(); } } public class Sub extends Super { private void f() { System.out.println("Sub.f()"); } public void k() { f(); } } //运行下列语句: Super obj = new Sub(); obj.g(); obj.k(); //输出的结果是:
输出:
Super.f()
Sub.f()
第一个因为继承了父类[因为子类没有g(),所以直接输出父类的g(), g()调用的是本类的f();
第二个因为子类重写了父类的k(),相当于覆盖了父类的k(),所以调用的是子类的f()