分析以下程序的运行成果

class A{

protected void print(String s){

    System.out.println(s);

   }

A(){print("A()");}

public void f(){print("A:f()");}

}

class B extends A {

B(){print("B()");}

public void f(){print("B:f()');}

public static void main(String arg[]){

    B b=new B();b.f();

    }

}

  • 运行结果:
A()
B()
B:f()
  • 解释:
    • 主函数中 实例化 B对象,那首先进入 B的构造方法;这个时候隐含调用 父类 A的构造方法【super()】;所以先执行 A的构造方法打印 A()
    • 然后继续B的构造方法,打印 B() 完成实例化操作;
    • 最后调用 B的 f 方法,打印 B:f()