一、目录
- 构造器介绍
- 构造器实例
- 构造器细节
- 构造器练习
- 先从一个需求中了解什么是构造器:
之前在创建人类这个对象的时候,是先把一个对象创建好,再给其年龄和姓名等属性赋值。
那么如果现在有个需求,就是在创建人类的对象的时候,就直接指定这个对象的年龄和姓名。
该怎么做?这时候就可以使用构造器(构造方法)。
-
基本介绍 构造方法又叫构造器(constructor),是类的一种特殊的方法,它的主要作用是完成对新对象的初始化。
-
基本语法
[修饰符] 方法名(形参列表){方法体;}
说明:
- 构造器的修饰符可以是默认的,也可以是public、protected、private。
- 构造器没有返回值。
- 方法名和类名必须一样。
- 参数列表和成员列表一样的规则。
- 构造器的调用是由系统完成的。
public class javaconstructor {
public static void main(String[] args){
Person p = new Person("lilei", 18);
System.out.println("p infomation is:");
System.out.println("p's name is " + p.name);
System.out.println("p's age is " + p.age);
}
}
class Person{
String name;
int age;
public Person(String pName, int pAge){
System.out.println("The constructor is be used,and init successfully");
name = pName;
age = pAge;
}
}
//The constructor is be used,and init successfully
//p infomation is:
//p's name is lilei
//p's age is 18
四、构造器细节
- 一个类可以定义多个不同的构造器,即构造器重载。
- 构造器名和类名要相同。
- 构造器没有返回值。
- 构造器是完成对象的初始化,并不是创建对象。
- 在创建对象时,系统自动的调用该类的构造方法。
- 如果程序员没有定义构造方法,系统会自动给类生成一个默认无参构造方法(也叫默认构造方法),比如Person(){},使用javap指令反编译查看。
- 一旦定义了自己的构造器,默认的构造器就覆盖了,就不能再使用默认的无参构造器了,除非显式的定义一下,即:Person(){}。
对于第六条演示一下:
javaconstructor.java
class Dog{
String name;
String number;
}
用javac将.java文件编译成.class文件后,再用javap命令反编译.class文件:
javac javaconstructor.java
javap Dog.class
在上面定义的Person类中添加两个构造器:
第一个无参构造器:利用构造器设置所有人的age属性初始值都为18。
第二个带pName和pAge两个参数的构造器:使得每次创建Person对象的同时初始化对象的age和name属性值。
分别使用不同的构造器,创建对象。
public class javaconstructor {
public static void main(String[] args){
Person p1 = new Person("lilei", 30);
System.out.println("p1 infomation is:");
System.out.println("p1's name is " + p1.name);
System.out.println("p1's age is " + p1.age);
Person p2 = new Person();
System.out.println("p2 infomation is:");
System.out.println("p2's name is " + p2.name);
System.out.println("p2's age is " + p2.age);
}
}
class Person{
String name;
int age;
public Person(String pName, int pAge){
System.out.println("The constructor is be used,and init successfully");
name = pName;
age = pAge;
}
Person(){
age = 18;
}
}
//The constructor is be used,and init successfully
//p1 infomation is:
//p1's name is lilei
//p1's age is 30
//p2 infomation is:
//p2's name is null
//p2's age is 18