关于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()



posted @ 2018-08-23 21:20  闻长歌而知雅意  阅读(109)  评论(0编辑  收藏  举报