A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

class Teacher extends Person {   
        public Teacher() {   
                super();   
       }   
        public Teacher(int a) {   
               System.out.print(a);   
      }   
         public void func() {   
             System.out.print("2,");   
      }   
       public static void main(String[] args) {   
              Teacher t1 = new Teacher();   
             Teacher t2 = new Teacher(3);   
      }   

  class Person {   
       public Person() {   
            func();   
          }   
        public void func() {   
             System.out.print("1,");   
       }   
}  

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

4 个回复

倒序浏览
func  已经被重写了,虽然去找父类的构造方法,但是父类要调用的func已经被重写了,那么必然用子类的  自然第一个是2   第2个是23

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
本帖最后由 齐国峰 于 2011-11-16 13:47 编辑

支持楼上第一个是被子类重写了,
第二个2好像是因为
         public Teacher(int a) {   
               System.out.print(a);   
       }  
这个好像会等价于
      public Teacher(int a) {
                this();
               System.out.print(a);   
       }  

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
吉许 黑马帝 2011-11-16 16:08:18
板凳
你这要考查的是继承和函数的重载.
具体就是被依赖的先构造,依赖于人的后构造.跨层依赖优先于同层依赖构造
回复 使用道具 举报
前两个是2是因为在调用无参构造方法时,先去调用父类的构造方法,而父类构造方法中调用的方法在子类中重写了,所以调用子类的方法,然后又回来调用子类的构造方法,依次递归,
输出3是调用teacher的有参的构造方法。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马