黑马程序员技术交流社区
标题:
关于函数构造器的疑问,求解惑?
[打印本页]
作者:
孙政
时间:
2013-5-3 11:33
标题:
关于函数构造器的疑问,求解惑?
public person()
{
}
public person(String name,String age)
{
this.name=name;
this.age=age;
}
复制代码
为什么在写有参构造器时,先会定义个无参构造器,想问问有什么作用?一般在什么情况时在用?
作者:
Jacky_Chen1990
时间:
2013-5-3 11:36
你需要指导一下几个知识点,才可以理解。
1 每一个类在默认情况下,都会有一个无参数构造器!
2 当显示申明了带参构造器,那么无参构造器就不存在了,需要无参构造器,就必须重新申明!
3 构造器是不能够继承的
4 在类构造器中,无论是有参数还是无参数构造器,默认情况下,首先会调用父类的无参构造器(一直到最上层的父类),这是因为要调用父类继承下来的方法必须要先初始化父类.
5 需要在子类构造器中调用父类其它的构造器,可以显示申明。
作者:
4、5点先生
时间:
2013-5-3 11:54
学习、、
作者:
赵崇友
时间:
2013-5-3 11:58
标题:
RE: 关于函数构造器的疑问,求解惑?
class Person
{
private String name;
private String age;
public person()//无参数的构造函数
{
}
public person(String name,String age)//有参数的构造函数
{
this.name=name;
this.age=age;
}
}
class Student extends Person
{
private String name;
private String age;
Student (String name,String age)
{
//super();
this.name=name;
this.age=age;
}
}
复制代码
一般情况,我们自己不设计一个构造函数的话,java会给我们默认一个无参数的构造函数。
但是当我们需要有参数的构造函数的时候,我们就需要自己定义。你上面的第二个就是有参数的。
而Java规定了当类中有了自定义的构造函数时,就不会给默认空参数的构造函数了。这个时候,如果你还需要空参数的构造函数的话,就必须自己手动再创建一个空参数的构造函数了。如果用不到,就不要创建了。
另外空参数的构造函数还有另个作用,如上面的代码:
学生Student类继承了Person类,那么在Student类中 Student (String name,String age)构造函数的第一行会有一个默认的super(),Person类的空参数构造函数;如果Person类中没有空参数构造函数的话,则Student类中 Student (String name,String age)构造函数的第一行就没有默认的super(),这时候,必须写一个有参数的super语句:super(name,age);
不知道我解释清楚了没有。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2