关于java的继承问题

//类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()



往事如烟,余生有我.
原文地址:https://www.cnblogs.com/assistants/p/9526413.html