- class A
- {
- proteced 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[] args)
- {
- B b = new B();
- b.f();
- }
- }
复制代码 练习代码如上。主要是讨论分析,得到的结果。我分析的过程:
1、B继承了A,在执行 【B b = new B( );】之前,B应该会去寻找是否有继承A的 构造函数。这个对吧?
所以先执行 A()。 于是把 A() 赋值给了 print(String s),打印输出 【A()】
2、应该可以执行【B b = new B( );】了吧? 我在这卡了。A父类的proteced 是表示什么? 如果换成private的话,是不是 B 就无法调用 A 中的print(String s ) 了? 第二步应该打印输出 是【B()】吧。
3、执行 b.f( ); f()又调用了A的 print(String s ) 打印输出【B:f()】 这步骤是算调用?还是算继承父类?有点背搞蒙了
|