Java构造函数

来源:互联网 发布:c语言 char 中文 编辑:程序博客网 时间:2024/05/18 14:24

1.引出构造器

创建一个学生对象的时候,代码如下:
Student s1  = new  Student();
这个代码特别像:在调用一个方法名称为Student的无参数方法.

我们把这种特殊的方法,称之为构造方法,构造器(构造函数/构造子:Constructor).但是我们发现在Student类中,却找不到该构造方法,找不到,却又没有报错.编译器在编译源文件的时候,会创建一个缺省的构造器.

2.构造器的作用

       1):创建对象,必须和 new 一起使用.
       2):完成对象的初始化操作.

3.构造器的特点

      1):构造器的名称和当前所在类的名称相同.
              如果构造器名称叫XXX,  new  XXX();你看出来创建的是什么类型的对象吗?
      2):禁止定义返回类型,千万不要使用void作为返回类型. void  Student(){}这是普通方法.
              假设需要写返回类型,也应该这样写:Student   Student(); 既然所有的返回类型都和所在类名相同,何必再写.
      3):在构造器中,不需要使用return语句.
              其实构造器是有返回值的,返回的是当前创建对象的引用.

4.编译器创建构造器的特点

      1):符合构造器特点.
      2):无参数的.
      3):无方法体.
      4):如果类A没有使用public修饰,则编译器创建的构造器也没有public修饰.
                               使用了public修饰,则编译器创建的构造器也使用public修饰.



构造器:如果我们没有显示提供构造器,则编译器在编译时创建一个缺省的构造器.
但是,如果我们显示定义了一个构造器,则编译器不再创建默认构造器.
------------------------------->推论:某一个类,至少存在一个构造器.

例1:对象创建调用构造器.创建一个PersonDemo.java文件
class Person //Person类 {Person(){   //person类的构造器System.out.println("构造器执行");}}class PersonDemo{public static void main(String[] args){Person p = new Person();   //创建Person类对象其实就是在调用Person类的构造器方法}}
运行结果


例2:在构造器中进行初始化操作.同样创建一个PersonDemo.java文件
class Person //Person类 {String name;Person(String n){   //person类带参数的构造器System.out.println("构造器执行");name=n;  //对Person进行初始化操作}}class PersonDemo{public static void main(String[] args){Person p = new Person("张三");   //创建Person类对象其实就是在调用Person类的构造器方法System.out.println(p.name);      //现在打印Person对象的name已经被初始化}}
运行结果

5.构造器的重载(Overload):

   避免了在同一个类中,相同功能的方法名字不同的问题.
判断依据:两同一不同.
 -------------------------------------------------------
构造器是一种特殊的方法,也可以存在重载.
例3:构造器的重载.同样创建一个PersonDemo.java文件
class Person //Person类 {String name;Person(){           //person类无参数的构造器System.out.println("无参数的构造器执行");}Person(String n){   //person类带参数的构造器System.out.println("有参数的构造器执行");}}class PersonDemo{public static void main(String[] args){Person p1 = new Person();         //创建Person类对象调用Person类的有参数构造器方法Person p2 = new Person("张三");   //创建Person类对象调用Person类的有参数构造器方法}}
运行结果


原创粉丝点击