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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孙政 中级黑马   /  2013-5-3 11:33  /  1464 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public person()
  2. {
  3.   }
  4. public person(String name,String age)
  5. {
  6.   this.name=name;
  7.   this.age=age;
  8. }
复制代码
为什么在写有参构造器时,先会定义个无参构造器,想问问有什么作用?一般在什么情况时在用?

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

4 个回复

倒序浏览
你需要指导一下几个知识点,才可以理解。
  
1 每一个类在默认情况下,都会有一个无参数构造器!
2 当显示申明了带参构造器,那么无参构造器就不存在了,需要无参构造器,就必须重新申明!
3 构造器是不能够继承的
4 在类构造器中,无论是有参数还是无参数构造器,默认情况下,首先会调用父类的无参构造器(一直到最上层的父类),这是因为要调用父类继承下来的方法必须要先初始化父类.
5 需要在子类构造器中调用父类其它的构造器,可以显示申明。

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
学习、、
回复 使用道具 举报

RE: 关于函数构造器的疑问,求解惑?

  1. class Person
  2. {
  3.      private String name;
  4.      private String age;
  5.      public person()//无参数的构造函数
  6.     {
  7.      }
  8.    public person(String name,String age)//有参数的构造函数
  9.    {
  10.      this.name=name;
  11.     this.age=age;
  12.    }
  13. }
  14. class Student extends Person
  15. {
  16.     private String name;
  17.      private String age;
  18.      Student (String name,String age)
  19.     {
  20.        //super();
  21.        this.name=name;
  22.        this.age=age;
  23.     }
  24. }
复制代码
一般情况,我们自己不设计一个构造函数的话,java会给我们默认一个无参数的构造函数。
但是当我们需要有参数的构造函数的时候,我们就需要自己定义。你上面的第二个就是有参数的。
而Java规定了当类中有了自定义的构造函数时,就不会给默认空参数的构造函数了。这个时候,如果你还需要空参数的构造函数的话,就必须自己手动再创建一个空参数的构造函数了。如果用不到,就不要创建了。
另外空参数的构造函数还有另个作用,如上面的代码:
学生Student类继承了Person类,那么在Student类中  Student (String name,String age)构造函数的第一行会有一个默认的super(),Person类的空参数构造函数;如果Person类中没有空参数构造函数的话,则Student类中  Student (String name,String age)构造函数的第一行就没有默认的super(),这时候,必须写一个有参数的super语句:super(name,age);
不知道我解释清楚了没有。

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

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