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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 宋超2356 中级黑马   /  2014-3-27 16:23  /  869 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 宋超2356 于 2014-3-27 16:47 编辑
  1. class SuperClass {
  2.     private int n;
  3.          
  4.          
  5.     SuperClass() {
  6.         System.out.println("SuperClass()");
  7.     }
  8.    
  9.    
  10.   
  11.     /*SuperClass(int n) {
  12.         System.out.println("SuperClass(" + n + ")");   这里都注释掉了
  13.         this.n = n;
  14.     }*/
  15. }

  16. class SubClass extends SuperClass {
  17.     private int n;
  18.    
  19.     SubClass(int n) {
  20.                     //super(n);
  21.         System.out.println("SubClass(" + n + ")");
  22.         this.n = n;
  23.     }
  24.    
  25.     SubClass() {
  26.                     //super();
  27.         System.out.println("SubClass()");
  28.     }
  29. }

  30. public class Test {
  31.     public static void main(String arg[]) {
  32.         SubClass sc1 = new SubClass(400);
  33.         SubClass sc2 = new SubClass();
  34.     }
  35. }
复制代码

所有继承不是都要有调用父类的构造函数么,就是都要写上super()在子类构造函数的第一行,这样的没调用也都可以执行?是什么机制?

评分

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

查看全部评分

4 个回复

倒序浏览
是会调用啊。因为你创建了子类的实例对象。这样在子类的构造方法调用之前,就要先调用父类的构造方法为父类的成员变量进行初始化。父类的成员变量变量完成初始化之后才会调用子类的构造方法为子类进行初始化。

评分

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

查看全部评分

回复 使用道具 举报
SubClass sc1 = new SubClass(400);
        SubClass sc2 = new SubClass();这两句话在执行时,都要先调用父类,
执行结果是这样的,
SuperClass()
SubClass(400)
SuperClass()
SubClass()

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 橡皮-leo 于 2014-3-27 17:21 编辑

  SubClass() {                     //super();         System.out.println("SubClass()");     }因为在子类继承父类的,在创建子类对象的时候,子类的构造函数第一句会默认有一个super()访问父类的构造函  SubClass sc1 = new SubClass(400);
当子类对象创建的时候 优先访问了父类的构造函:SuperClass() 接着访问带400参数的子类函数:SubClass(400),当SubClass sc2 = new SubClass();创建了第二对象时再次访问了父类的构造函数,接着访问子类的SubClass().

评分

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

查看全部评分

回复 使用道具 举报
调用了子函数对象才会调用父类的构造函数,不调用子类对象是不会调用父类构造函数的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马