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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 净坛使者 中级黑马   /  2014-1-4 23:36  /  2016 人查看  /  10 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

构造函数和一般函数的区别,该怎么用

10 个回复

倒序浏览
构造函数是名字和类名相同的函数。作用是对类进行初始化。类一经调用就读取构造方法。
子类必须复写父类的一个构造函数。如果函数没有写构造函数,系统会自动添加一个构造函数。
当父类没有写构造函数时候,子类自动调用父类的super()构造函数。如果父类有其他的构造函数,这个时候子类就必须手动调用父类的构造函数了。
回复 使用道具 举报
构造函数和一般函数的不同:
1.构造函数是在对象一建立就运行,给对象初始化
2.而一般方法是对象调用才执行,给是对象添加对象具备的功能
3.一个对象建立,构造函数只运行一次
4. 而一般方法则调用一次执行一次
//关于构造函数一些特性
   1.构造函数是与类名同名,没有返回类型的,默认的构造函数是无参数,给对象初始化
   2.当一个类中没有定义构造函数时,系统会默认给该类加一个空类的构造函数
   3.构造函数也可以重载,当定义了构造函数,系统默认的空构造函数就不起用了,如果必须用到无参
      构 造函数,则必须手动添加该无参构造函数
   3.
回复 使用道具 举报
4.本类构造函数互相调用用this(),且必须把this放在第一排,因为初始化要先执行
5.调用父类构造函数用super(),且必须把super放在第一排,因为初始化要先执行
回复 使用道具 举报
//下面是我整理的关于构造函数和代码块的笔记,希望可以帮到你
Constructor(构造函数,也称构造方法,构造器)
构造函数是肯定会存在的
1.如果你自己没有写,系统会默认帮你加一个无参数的构造函数,这个构造函数不执行任何操作
2.如果你自己写过,就会自动替换掉默认的空参数构造函数,这时候执行什么操作由你决定
注:由于接口不允许被实例化,所以接口中没有构造方法。

构造函数的存在有什么作用
JVM在创建对象的时候会同时调用与这个对象相对应的构造函数来完成对此对象的初始化工作。
当一个类的实例对象刚产生时,这个类的构造方法就会被自动调用,我们可以在这个方法中加入要完成初始化工作的代码。
这就好像我们规定每辆“车”要出厂都必须安车轱辘,我们就可以在“车”的构造方法中加入安装“轮胎”的程序代码,
于是每辆“车”一出厂前就会自动完成“安轮胎”,程序就不必再在每个车要出厂时一个一个地告诉它们要“安轮胎”了。


构造函数如何使用:
1.构造函数必须与类同名(如果一个源文件中有多个类,那么构造函数必须与公共类同名)
2.每个类可以有一个以上的构造函数
3.构造函数分为两种:无参数构造方法和有参数构造方法
4.构造函数可以重载,以参数的个数,类型。但是,不区分参数的排列顺序。
   (当同一个类存在多个构造方法时,编译器会自动按照初始化时最后面括号的参数个数以及参数类型来自动一一对应,
   完成构造函数的调用。)
   和一般的方法重载一样,重载的构造方法具有不同个数或不同类型的参数,
   编译器就可以根据这一点判断出用new 关键字产生对象时,该调用哪个构造方法了。
   产生对象的格式是:new 类名(参数列表) ;
   重载构造方法可以完成不同初始化的操作, 如:Person p=new Person (zhangsan, 22); 语句,
   会做这样几件事:创建指定类的新实例对象,在堆内存中为实例对象开辟内存空间,
   并调用指定类的构造方法,最后将实例对象的首地址赋值给引用变量p。
5.构造函数没有返回值,也不能定义为void
6.构造函数总是伴随着new 新对象操作一起调用
7.不能被static、final、synchronized、abstract和native修饰。
8.使用"super调用父类构造函数的语句"必须是子类构造函数的"第一条语句"。
9.构造函数不可以被子类重写,因为子类无法定义与基类具有相同型构的构造函数。

构造函数和代码块
代码块就是函数中的"{}"
普通代码块:就是一个普通方法中的"{}",只有在被调用时才会执行
静态代码块:仅使用关键字static声明{},将某一段代码声明为静态的,
          其作用是给类进行初始化(一般针对类的静态属性进行),相对构造函数少用。
           静态代码块只能定义在类里面,它独立于任何方法,不能定义在方法里面。
静态代码块会在类被加载时自动执行,而无论加载者是JVM还是其他的类。
一个类中允许定义多个静态代码块,执行的顺序根据定义的顺序进行。
静态代码块里面的变量都是局部变量,只在本块内有效。
静态代码块优先于main方法执行。
静态代码块只能访问类的静态成员,而不允许访问实例成员,
之所以不允许静态方法访问实例成员变量,是因为实例成员变量是属于某个对象的,
而静态代码块里的方法体在执行的时候还不一定存在对象。
构造代码块:直接在类中定义的"{}",简称三无人员,其作用是给对象进行初始化的,
而且是对所有对象的共性部分进行初始化,即每个对象创建时都会执行构造代码块。
构造代码块是给所有不同对象的共性进行统一初始化,构造函数是给对应的对象进行初始化
同一类中的不同构造代码块之间也按照在类中出现的先后顺序执行


执行顺序:静态代码块——构造代码块——构造函数

注:静态代码块与构造代码块的异同点
相同点:都是在JVM加载类时在构造方法之前执行,在类中都可以定义多个,
不同点:静态代码块只会在构造该类的第一个对象时执行,之后再构造该类对象则不再执行。
    构造代码块每new一个新对象就会执行一次。
回复 使用道具 举报
构造函数:用于给对象进行初始化,是给与之对应的对象进行初始化,它具有针对性,函数中的一种。
特点:
1:该函数的名称和所在类的名称相同。
2:不需要定义返回值类型。
3:该函数没有具体的返回值。

注意事项:一个类在定义时,如果没有定义过构造函数,那么该类中会自动生成一个空参数的构造函数,为了方便该类创建对象,完成初始化。如果在类中自定义了构造函数,那么默认的构造函数就没有了。

一个类中,可以有多个构造函数,因为它们的函数名称都相同,所以只能通过参数列表来区分。所以,一个类中如果出现多个构造函数。它们的存在是以重载体现的。

构造函数和一般函数有什么区别呢?
1:两个函数定义格式不同。
2:构造函数是在对象创建时,就被调用,用于初始化,而且初始化动作只执行一次。
    一般函数,是对象创建后,需要调用才执行,可以被调用多次。
   
什么时候使用构造函数呢?
分析事物时,发现具体事物一出现,就具备了一些特征,那就将这些特征定义到构造函数内。

构造代码块和构造函数有什么区别?
构造代码块:是给所有的对象进行初始化,也就是说,所有的对象都会调用一个代码块。只要对象一建立。就会调用这个代码块。
构造函数:是给与之对应的对象进行初始化。它具有针对性。
回复 使用道具 举报

  1. //【构造函数】

  2. /*
  3. 构造函数一旦建立,就会调用与之对应的构造函数。
  4. 构造函数可以给对象进行初始化。

  5. 细节;
  6. 当一个类中没有定义构造函数时,系统会默认给该类加入一个空参数的构造函数。


  7. */


  8. //【构造函数test】

  9. class Person//建立一个Person类
  10. {
  11.         private String name;//封装 一个字符串类型的 name
  12.         private int age;//类似如上
  13.        
  14.        
  15.         Person()//  *构造函数 要与类同名。参数为空
  16.         {
  17.                 System.out.println("A " + name + " age" + age);
  18.         }
  19.        
  20.         Person(String n)//*构造函数的重载,就是参数的内容与之前的不一样 。这里定义的是一个字符串类型的n
  21.         {
  22.                 name = n;
  23.                 System.out.println("A " + name + " age" + age);
  24.         }
  25. }

  26. class personDemo
  27. {
  28.         public static void main(String[] args)
  29.         {
  30.                 Person p = new Person();//创建一个空参数的对象,调用无参构造
  31.                
  32.         }
  33. }
复制代码



我学习构造函数时候的笔记,我又做了一下调整和分析,
你可以借着参阅一下。看看能不能找到一点思路
回复 使用道具 举报
构造函数 是一种特殊的方法 主要用来在创建对象时初始化对象 即为对象成员变量赋初始值
    总与new运算符一起使用在创建对象的语句中 特别的一个类可以有多个构造函数 可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载
    构造函数与其他方法的区别
1.构造函数的命名必须和类名完全相同;而一般方法则不能和类名相同.
2.构造函数的功能主要用于在类的对象创建时定义初始化的状态.它没有返回值,也不能用void来修饰.这就保证了它不仅什么也不用自动返回,而且根本不能有任何选择.而其他方法都有返回值.即使是void返回值,尽管方法体本身不会自动返回什么,但仍然可以让它返回一些东西,而这些东西可能是不安全的.
3.构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用,一般方法在程序执行到它的时候被调用.
4.当定义一个类定义的时候,通常情况下都会显示该类的构造函数,并在函数中指定初始化的工作也可省略不去Java编译器会提供一个默认的构造函数.此默认构造函数是不带参数的.而一般方法不存在这一特点
另外:
构造函数的名字必须与类名相同,而且不可以有返回值,也不能有return 语句。
构造函数往往执行一些初始化的操作。
回复 使用道具 举报
构造函数的特点是名字和构造函数所在的类的名称一致,当创建对象时构造函数会执行一次,可以用于初始化对象,构造函数可以以重载的形式在类中出现多个,创建对象时会根据对象传递的参数运行对应的构造函数;而一般函数要调用的时候才会执行,可以多次调用,执行多次,
回复 使用道具 举报
构造函数和一般函数格式上不同,但是最重要的是运行上的不同,构造函数以创建就运行,且只执行一次。一般函数只有需要的时候才运行并且可以运行很多次。
回复 使用道具 举报
构造函数和一般函数在写法上有不同。

在运行上也有不同。
构造函数是在对象一建立就运行。给对象初始化。
而一般方法是对象调用才执行,给是对象添加对象具备的功能。

一个对象建立,构造函数只运行一次。
而一般方法可以被该对象调用多次。

什么时候定义构造函数呢?
当分析事物时,该事物存在具备一些特性或者行为,那么将这些内容定义在构造函数中。
构造函数例子:
Person()
        {
                System.out.println("A: name="+name+",,age="+age);
               
        }
一般函数:
public void cry()
        {
               
                System.out.println("cry......");
        }
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马