java中构造器(Constructor)

转载 2012年03月27日 16:57:02

大部分内容转自:http://tech.it168.com/j/2006-05-18/200605181021879.shtml       

       构造器是一个创建对象时被自动调用的特殊方法,为的是初始化。构造器的名称应与类的名称一致。

       当创建一个个对象时,系统会该对象的属性默认初始化,基本类型属性的值为0(数值类型),false(布尔类型),把所有的引用类型设置为null.

       构造器可以改变这种默认的初始化。

       构造器的作用:是创建java对象的重要途径,是不是说构造器完全负责创建java对象?

       答:是创建java对象的重要途径,通过new关键字调用构造器时,构造器也确实返回了该类的对象,但这个对象并不是完全由构造器负责创建的。

        首先要注意的是Java的构造器并不是函数,所以他并不能被继承,这在我们extends的时候写子类的构造器时比较的常见,即使子类构造器参数和父类的完全一样,我们也要写super就是因为这个原因。

 
  构造器的修饰符比较的有限,仅仅只有public private protected这三个,其他的例如任何修饰符都不能对其使用,也就是说构造器不允许被成名成抽象、同步、静态等等访问限制以外的形式。
 
  因为构造器不是函数,所以它是没有返回值的,也不允许有返回值。但是这里要说明一下,构造器中允许存在return语句,但是return什么都不返回,如果你指定了返回值,虽然编译器不会报出任何错误,但是JVM会认为他是一个与构造器同名的函数罢了,这样就会出现一些莫名其妙的无法找到构造器的错误,这里是要加倍注意的。
 
  在我们extends一个子类的时候经常会出现一些意想不到的问题,我在这里说一些和构造器有关的。

首先说一下Java在构造实例时的顺序(不讨论装载类的过程)。

 
  构造的粗略过程如下:
 
  1、分配对象空间,并将对象中成员初始化为0或者空,java不允许用户操纵一个不定值的对象。
 
  2、执行属性值的显式初始化(这里有一点变化,一会解释,但大体是这样的)。
 
  3、执行构造器
 
  4、将变量关联到堆中的对象上

 介绍一下准备知识,以备一会来详细说明这个的流程。

 

  this() 、super()是你如果想用传入当前构造器中的参数 or 构造器中的数据调用其他构造器或者控制父类构造器时使用的,在一个构造器中你只能使用this()或者super()之中的一个,而且调用的位置只能在构造器的第一行,在子类中如果你希望调用父类的构造器来初始化父类的部分,那就用合适的参数来调用super(),如果你用没有参数的super()来调用父类的构造器(同时也没有使用this()来调用其他构造器),父类缺省的构造器会被调用,如果父类没有缺省的构造器,那编译器就会报一个错误。

     注意此处,我们经常在继承父类的时候构造器中并不写和父类有关的内容,此时如果父类没有缺省构造器,就会出现编译器添加的缺省构造器给你添麻烦的问题了哦。

 

public class Manager extends Employee {
  private String department;
  public Manager(String name, double salary, String dept)
 {
   super(name, salary);
   department = dept;
 }
 public Manager(String n, String dept) {
   super(name);
   department = dept;
 }
 public Manager(String dept) {
  // 这里就没有super(),编译器会自动地添加一个空参数的缺省super构造器,此时如果Employee类中没有空参数的缺省构造器,那就会导致一个编译错误
   department = d;
 }
 }

Java 基础——构造器和方法的区别

构造函数(构造器)是一种特殊的函数。其主要功能是用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。构造函数与类名相同,可重载多个不同的构造函数。在JA...

JAVA菜鸟入门篇 - Java构造器 (十一)

构造器     又称为 构造方法,constructor    构造器用于构造该类的实例。    格式如下:    [修饰符]类名(形参列表){   //n条语句    } ...

java的构造器Constructor的理解

使用构造器时需要记住: 1.构造器必须与类同名(如果一个源文件中有多个类,那么构造器必须与公共类同名) 2.每个类可以有一个以上的构造器 3.构造器可以有0个、1个或1个以上的参数 4.构造器...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Java中的constructor

Java中的构造方法总结 今天写代码突然发现Java的构造方法也有不少说法呢,闲来无事,总结一下: 构造方法和实例方法的区别: 一、主要的区别在于三个方面:修饰符、返回值、命名 ...
  • skycmd
  • skycmd
  • 2016年07月02日 14:56
  • 320

java学习基础篇(二)构造器的定义与作用

本科时曾自学过一段时间的Java,上研之后就基本没再碰过了,现在想要重新捡起来,所以把这些整理一下,主要是用来督促自己的学习,该资料整理来源于尚硅谷-佟刚的教学视频,仅用来学习。构造方法的特征 - ...

java构造器小结

当创建一个个对象时,系统会该对象的属性默认初始化,基本类型属性的值为0(数值类型),false(布尔类型),把所有的引用类型设置为null.       构造器可以改变这种默认的初始化。     ...

java中的构造器

构造器的语法格式的详细说明如下: 修饰符: 修饰符可以省略,也可以是public,protected,private其中之一 构造器名:构造器名必须和类名相同 形参列表:和定义方法形参列表的格式完全相...

Java反射之Constructor(一)

什么是反射?要弄清楚反射,我们必须弄清楚什么是字节码,什么是类装载器。我们知道,Java是一个完全面向对象的语言, 那么我们写好的 .java 文件经过编译后生成的 .class  ,对Java虚拟机...

Java中的constructor

Java中的构造方法总结 今天写代码突然发现Java的构造方法也有不少说法呢,闲来无事,总结一下: 构造方法和实例方法的区别: 一、主要的区别在于三个方面:修饰符、返回值、命名 1、和实例方法...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java中构造器(Constructor)
举报原因:
原因补充:

(最多只允许输入30个字)