黑马程序员技术交流社区
标题:
继承中构造方法的问题
[打印本页]
作者:
xkfxm
时间:
2013-7-4 00:46
标题:
继承中构造方法的问题
本帖最后由 xkfxm 于 2013-7-4 18:06 编辑
学习了继承,在做基础测试的时候遇到一个问题。他说几个类中只有默认的构造函数,问怎么证明子类创建对象的时候是否会访问父类的构造函数?本来清醒的,一下糊涂了
默认构造函数是什么?是不是空参数的构造函数就是默认构造函数?还是不要重写构造函数,
当创建对象时,虚拟机给类添加的那个空参数的构造函数才是默认函数?如果我自己定义了一个空参数的构造函数是不是默认构造函数呢?
作者:
郭东生
时间:
2013-7-4 00:59
本帖最后由 郭东生 于 2013-7-4 01:03 编辑
class Demo {
public static void main(String[] args) {
Zi z = new Zi();
}
}
class Fu {
Fu(){\\空参数的构造函数
System.out.println("Fu:构造函数");
}
}
class Zi extends Fu {
}
复制代码
结果:
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