Java中的构造器
一、构造器简述
构造器也称为构造方法,是一种特殊方法。是创建对象时程序必须调用的一种方法,也就是其主要功能就是伴随关键字new
一起创建对象。经常用于初始化对象的的属性(给成员员变量赋值)。
二、构造器的语法:
修饰符 类名 (参数列表...){
//逻辑代码
}
1.1 无参构造:
- 类中即便没定义任何构造器,Java程序也会默认创建一个无参构造器。
自动无参构造示例:
//Application.java package com.zctou.oop.demo01; public class Application { public static void main(String[] args) { Person person = new Person(); } } //Person.java package com.zctou.oop.demo01; public class Person { }
2.2 有参构造:
- 当类中显式定义了构造器,不管有参没参,程序也不再默认提供无参构造器。
有参构造示例:
//Application.java package com.zctou.oop.demo01; public class Application { public static void main(String[] args) { Person person = new Person(); } } //Person.java package com.zctou.oop.demo01; public class Person { String sex; //性别 int age; //年龄 public Person(String sex) { //只定义了有参构造,没定义无参构造 this.sex = "male"; } } //输出: java: 无法将类 com.zctou.oop.demo01.Person中的构造器 Person应用到给定类型; 需要: java.lang.String 找到: 没有参数 原因: 实际参数列表和形式参数列表长度不同
从上面示例可以看到,定义了有参构造而没不定义无参构造,系统报错
找不到构造器
,说明系统不再自动提供无参构造。
三、构造器的注意点:
1.1 调用时间
Java中,构造器只有在创建对象时才会被调用,是一种特殊的方法。
1.2 功能与作用
构造器的主要功能就是创建对象,能在创建对象时初始化类中的成员变量。
1.3 定义构造
- 修饰符:只能是访问类修饰符如:public, protected, private。构造器不能有非访问性质的修饰哪: abstract, final, native, static, 或者 synchronized。
- 返回值类型:构造器不能有返回值,包括
void关键字
。 - 命名:构造器只必须与类的名字相同,是特殊的方法,Java中的其他方法则作用驼峰命名原则。
1.4 this的用法
- 与其他方法不一样,构造器中的
this
指的是同一个类中其他的构造器,这些构造器的参数列表必须不一样(其实就是调用其他方法)。 this
必须是在构造器内的第一行。
//Application.java
package com.zctou.oop.demo01;
public class Application {
public static void main(String[] args) {
Person person = new Person();
System.out.println(person.sex);
}
}
//Person.java
package com.zctou.oop.demo01;
public class Person {
String sex; //性别
int age; //年龄
public Person(){
this("female");
//this("female",10); //如果连接两个this,会报错
}
public Person(String sex) {
this.sex = sex;
}
public Person(String sex,int age) {
this.sex = sex;
this.age = age;
}
}
//输出
female