本帖最后由 张凯 于 2012-7-19 20:03 编辑
父类Person,有无参构造方法Person(),和公用方法func().
子类Teacher,有无参构造方法Teacher(),有参构造方法Teacher(int a)和公用方法func().
代码如下:
Java代码
1.class Teacher extends Person {
2. public Teacher() {
3. super();
4. }
5. public Teacher(int a) {
6. System.out.print(a);
7. }
8. public void func() {
9. System.out.print("2,");
10. }
11. public static void main(String[] args) {
12. Teacher t1 = new Teacher();
13. Teacher t2 = new Teacher(3);
14. }
15.
16.}
17.
18.class Person {
19. public Person() {
20. func();
21. }
22. public void func() {
23. System.out.print("1,");
24. }
25.}
题目是問运行结果是什么?
我的理解如下:
从主方法入手,声明Teacher类的实例t1和t2,其中t1使用无参构造方法Teacher()进行初始化,而Teacher()中使用super(),即使用父类Person中无参构造方法Person(),在这个父类的构造方法中调用了func().所以,实例t1输出是:1, .
在实例t2中,使用有参构造方法Teacher(int a)进行初始化.所以,实例t2输出是:3
所以猜测的运行结果应该为1,3
实际运行结果为:2,2,3
我的疑问是:为什么会在使用了super()的情况下,调用的func()却是子类中的func()?而且是调用了两次?望各位大神解答.
|