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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xkfxm 中级黑马   /  2013-7-4 00:46  /  1415 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 xkfxm 于 2013-7-4 18:06 编辑

    学习了继承,在做基础测试的时候遇到一个问题。他说几个类中只有默认的构造函数,问怎么证明子类创建对象的时候是否会访问父类的构造函数?本来清醒的,一下糊涂了
     默认构造函数是什么?是不是空参数的构造函数就是默认构造函数?还是不要重写构造函数,
当创建对象时,虚拟机给类添加的那个空参数的构造函数才是默认函数?如果我自己定义了一个空参数的构造函数是不是默认构造函数呢?

评分

参与人数 1技术分 +1 收起 理由
Just_Only + 1 神马都是浮云

查看全部评分

3 个回复

倒序浏览
本帖最后由 郭东生 于 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:构造函数

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

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

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 很给力!

查看全部评分

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


具体请参考我的这个博客,有详解
http://cy2212072.blog.163.com/blog/static/136165402201338103657601/
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马