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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 周洋 黑马帝   /  2012-3-30 22:40  /  3229 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

有参  与无参数的 构造函数 用处有什么区别

11 个回复

倒序浏览
当new一个对象时,先判断是否调用的构造函数有参数, 如果有参数,则根据参数的个数、类型来自动调用相应 的构造函数构造对象,分配内存,并返回对象的引用。 “如果定义了一个带参数的构造方法后,就一定要定义一个 不带参数的构造方法,否则就不能创建新对象(无参数)。” 因为当构造一个类的对象时,编译器首先判断类是否有 构造函数,如果没有,则自动加上一个默认构造函数, 而一旦发现有构造函数后,则不再自动加上构造函数。 转而认为你没有用类的合法的构造函数而报出编译错误。
带参数的构造函数
public xx(String a)
{
}
不带参数的就是
public xx()
{
}

两个个的区别就是带参数的可以在实例化这个类的时候通过外边给类中的某个属性赋值
回复 使用道具 举报
当构造函数的内容需要参与运算则需要定义参数。所以有参数的构造函数的内容是可以参与运算的,而无参的则不能。
回复 使用道具 举报
构造函数是在创建给定类型的对象时执行的类方法。构造函数具有与类相同的名称,它通常初始化新对象的数据成员。

任何时候,只要创建类或结构,就会调用它的构造函数。类或结构可能有多个接受不同参数的构造函数。构造函数使得程序员可设置默认值、限制实例化以及编写灵活且便于阅读的代码。

如果没有为对象提供构造函数,则默认情况下 C# 将创建一个构造函数,该构造函数实例化对象,并将所有成员变量设置系统指定的默认值。静态类和结构也可以有构造函数。

没有参数的构造函数就是默认构造函数。
有参数的构造函数可用传递的参数给类中的属性赋初始值或执行初始化操作例如订阅事件等
回复 使用道具 举报
首先明白,构造函数是给对应的对象进行初始化的。比如:a(){}   new x();         new y(a);   b(int a){}。
这必须对应起来,有参数的方法给有参数的对象进行初始化,没有参数的方法给没有参数的对象进行初始化。
回复 使用道具 举报
     无参构造函数你在创建对象的时候就不能传参数。有参构造函数你在new对象的时候就可以传指定参数
回复 使用道具 举报
葛尧 中级黑马 2012-3-31 01:40:45
7#
有参 在创建对象时就可以自定义一些属性,
无参 就是默认的了。。
回复 使用道具 举报
高铭 中级黑马 2012-3-31 11:28:42
8#
对象一建立就会调用与之对应的构造函数
比如:
public Student
{
  Student()
  {
     .....
  }
  Student(int a)
  {
   ....
  }
  Student(String n)
  {
   ...
  }
}
public StudentDemo
{
    public static void main(String[] args)
    {
         Student s = new Student();
         如果()里面没有参数就调用Student();这个构造函数
      如果()里面没有参数..为int类型..就调用Student(int a);这个构造函数
    }
}
回复 使用道具 举报
曹魁 中级黑马 2012-3-31 12:09:51
9#
1,构造函数是在创建给定类型的对象时执行的类方法。
2,构造函数具有与类相同的名称,它通常初始化新对象的数据成员。
3,任何时候,只要创建类或结构,就会调用它的构造函数。
4,类或结构可能有多个接受不同参数的构造函数。
5,构造函数使得程序员可设置默认值、限制实例化以及编写灵活且便于阅读的代码。
6,没有参数的构造函数就是默认构造函数。
7,有参数的构造函数可用传递的参数给类中的属性赋初始值或执行初始化操作例如订阅事件等。
回复 使用道具 举报
 1.构造函数的命名必须和类名完全相同;在java中普通函数可以和构造函数同名,但是必须带有返回值。  
 2.构造函数的功能主要用于在类的对象创建时定义初始化的状态.它没有返回值,也不能用void来修饰.这就保证了它不仅什么也不用自动返回,而且根本不能有任何选择.而其他方法都有返回值.即使是void返回值,尽管方法体本身不会自动返回什么,但仍然可以让它返回一些东西,而这些东西可能是不安全的.  
 3.构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用;而一般的方法是在程序执行到它的时候被调用的.  
 4.当定义一个类的时候,通常情况下都会显示该类的构造函数,并在函数中指定初始化的工作也可省略,不过Java编译器会提供一个默认的构造函数.此默认构造函数是不带参数的.而一般的方法不存在这一特点
回复 使用道具 举报
本帖最后由 石好强 于 2012-3-31 13:22 编辑

楼主问的问题是: 有参 与 无参 构造函数 用处的区别。

构造函数的用处:一般都用来给新创建的对象初始化。
有参数和无参数,区别仅仅是你有没有未知量参与运算,是否需要传递给函数一个参数,当然在构造函数中还有一个特性,重载函数!所以有参无参,参数多少也是重载函数的一个区别特征。

其他补充:当你新 new 一个构造函数,而构造函数类中没有自己创建的构造函数,那么系统会默认添加一个空的构造函数。
         类似-->  Person (){};

             而构造函数与一般函数的作用区别在于:构造函数只能在对象被创建开始就运行一次。不能多次运行于同一个对象,因为每次运行都是创建新的对象。一般函数则可以多次运行于同一个对象。





回复 使用道具 举报
izwj 中级黑马 2012-3-31 13:14:24
12#
本帖最后由 izwj 于 2012-3-31 13:15 编辑

构造函数是一种特殊的方法,主要用来在创建对象时初始化对象 即为对象成员变量赋初始值 ;
总与new运算符一起使用在创建对象的语句中,一个类可以有多个构造函数 可根据其参
数个数的不同或参数类型的不同来区分它们 。即构造函数的重载来实例化不同的对象。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马