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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨银川 黑马帝   /  2011-12-6 18:31  /  2080 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨银川 于 2011-12-6 21:23 编辑

想问一下,当一个子类继承它的父类的时候,子类还能声明构造方法吗,有点疑惑

评分

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

查看全部评分

6 个回复

倒序浏览
许邦存 来自手机 黑马帝 2011-12-6 18:45:51
沙发
可以声明子类的构造方法呀,而且一般都会用super调用父类的构造方法。

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 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),
子类的带参数构造函数是先找基类的无参构造函数,如果没有无参构造函数的话就得显示调用有参的。

评分

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

查看全部评分

回复 使用道具 举报
可以,子类可以用super()调用父类的构造方法,也可以自己声明子类的构造方法。

评分

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

查看全部评分

回复 使用道具 举报
恩,明白,多谢了
回复 使用道具 举报
可以,子类构造方法和父类构造方法没关系,因为名称不同
回复 使用道具 举报
子类继承父类的时候,构造方法是不能被继承的,所以子类的构造方法跟父类的构造方法没有关系,只是调用的时候有先后顺序!通过super关键字调用父类的一个构造方法,super语句必须位于子类构造方法的第一行。

评分

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

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马