黑马程序员技术交流社区

标题: 构造方法的疑问 [打印本页]

作者: 杨银川    时间: 2011-12-6 18:31
标题: 构造方法的疑问
本帖最后由 杨银川 于 2011-12-6 21:23 编辑

想问一下,当一个子类继承它的父类的时候,子类还能声明构造方法吗,有点疑惑
作者: 许邦存    时间: 2011-12-6 18:45
可以声明子类的构造方法呀,而且一般都会用super调用父类的构造方法。
作者: fly51888    时间: 2011-12-6 18:45
本帖最后由 fly51888 于 2011-12-6 18:49 编辑

可以的。
构造方法,顾名思义,就是在你new一个对象的时候就被调用的。当没有定义构造方法时每个类里都有一个默认的无参的构造方法,此时该类就只有一个构造方法;而当你显示定义类的构造方法时,那就没有那个默认的构造方法了,该类所以的构造方法就是定义了的那些构造方法;例如:定义一个Student类:
class Student1{
//不定义构造方法,此时默认的构造方法是Student1();new
//一个对象时只能这样构造,Student1 s=new Studnet1();

另外再写一个有定义构造方法的类:
class Student2{
Student(String name);
Student(String name,int age);
}
Student2有两个构造方法,默认的构造方法就没有了
创建Student2对象时只能用两个构造方法

Student2 s2=new Student2("xiaoming");
Student2 s2=new Student2("xiaoqiang",12);

子类继承父类时,构造函数的关系:
例如:
class A{
A(){}
A(int i){}
}


class B extends A{
B(int i){}
}

B这个时候不用显示调用A(int i),但是如果把A()注释掉,就得显示调用A(int i),
子类的带参数构造函数是先找基类的无参构造函数,如果没有无参构造函数的话就得显示调用有参的。


作者: 武超    时间: 2011-12-6 21:20
可以,子类可以用super()调用父类的构造方法,也可以自己声明子类的构造方法。
作者: 杨银川    时间: 2011-12-6 21:22
恩,明白,多谢了
作者: 应国炎    时间: 2011-12-7 13:47
可以,子类构造方法和父类构造方法没关系,因为名称不同
作者: Francis-Yu    时间: 2011-12-7 18:28
子类继承父类的时候,构造方法是不能被继承的,所以子类的构造方法跟父类的构造方法没有关系,只是调用的时候有先后顺序!通过super关键字调用父类的一个构造方法,super语句必须位于子类构造方法的第一行。




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