黑马程序员技术交流社区

标题: 继承中构造方法的问题 [打印本页]

作者: xkfxm    时间: 2013-7-4 00:46
标题: 继承中构造方法的问题
本帖最后由 xkfxm 于 2013-7-4 18:06 编辑

    学习了继承,在做基础测试的时候遇到一个问题。他说几个类中只有默认的构造函数,问怎么证明子类创建对象的时候是否会访问父类的构造函数?本来清醒的,一下糊涂了
     默认构造函数是什么?是不是空参数的构造函数就是默认构造函数?还是不要重写构造函数,
当创建对象时,虚拟机给类添加的那个空参数的构造函数才是默认函数?如果我自己定义了一个空参数的构造函数是不是默认构造函数呢?
作者: 郭东生    时间: 2013-7-4 00:59
本帖最后由 郭东生 于 2013-7-4 01:03 编辑
  1. class Demo {
  2.         public static void main(String[] args) {
  3.                 Zi z = new Zi();
  4.         }
  5. }

  6. class Fu {
  7.         Fu(){\\空参数的构造函数
  8.                 System.out.println("Fu:构造函数");
  9.         }
  10. }

  11. class Zi extends Fu {

  12. }
复制代码
结果:
Fu:构造函数

你若是没有定义构造函数,会有默认的空参构造函数,若是你定义了构造函数就不会有默认的构造函数,不论是否空参数的;自定义的构造函数可以重载。
若是定义了有参数的构造函数,想调用空参数的构造函数,必须以重载的形式给出(这时没有默认的空参数的构造函数);

希望我的解答对你的理解有帮助。

作者: xkfxm    时间: 2013-7-4 01:19
我的意思是,测试题上说几个类都只有默认构造函数。那我自定义的空参数的构造函数是不是默认构造函数呢?如果不是,那代码就是这样   
class  Person()
{
     Person()  //这个是默认构造函数吗?
     {
         System.out.Print("Person run");
     }
}
但是我要检测Student类在创建对象时访问了父类Person的构造函数,肯定要在Person的构造函数里面写写东西,比如输出一个什么,才能检测他执行到了啊
                        
作者: 曹宇    时间: 2013-7-4 01:52
自定义的 空参数 不是默认的 你什么都不干 系统会给你一个你看不到的默认的.....


具体请参考我的这个博客,有详解
http://cy2212072.blog.163.com/blog/static/136165402201338103657601/




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2