一:构造函数定义
- 一种特殊的方法,创建对象时用来初始化对象,每次使用new 创建对象的时候,就会使用构造函数
- 与类具有相同的名称,但是没有返回值,Java会自动为每个类提供一个默认构造函数
- 如果自己定义了构造函数,就不再使用默认构造函数,如果没有显示的写出默认构造函数,则会消失
- 注意点:如果构造函数之间互相调用,务必写在方法第一行
1.1 无参构造函数(默认构造函数)
代码示例:在chapter6的包下,创建Cat类
package chapter6;
public class Cat {
//构造函数
public Cat(){
System.out.println("Cat 无参构造函数");
}
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
在chapter6下,创建TestMain运行类
package chapter6;
public class TestMain {
public static void main(String[] args) {
//cat只要实例化一个对象,构造函数就会被调用
Cat cat = new Cat();
}
}
//运行结果:Cat 无参构造函数
1.2 有参构造函数
cat.java文件
- 如果存在有参构造函数,就要把无参构造函数显示的写出来
package chapter6;
public class Cat {
//无参构造函数
//如果存在有参构造函数,就要把无参构造函数显示的写出来
public Cat(){
System.out.println("Cat 无参构造函数");
}
//有参构造函数构造函数
public Cat(int age){
this.age = age;
System.out.println("Cat 有参构造函数,age为:" + age);
}
public Cat(int age,String name){
this.age = age;
this.name = name;
System.out.println("Cat 有参构造函数,age为:" + age + "name为:" + name);
}
private int age;
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
TestMain.java文件
package chapter6;
public class TestMain {
public static void main(String[] args) {
Cat cat1 = new Cat(1);
Cat cat2 = new Cat(2,"张三");
Cat cat3 = new Cat();
}
}
//运行结果:
//Cat 有参构造函数,age为:1
//Cat 有参构造函数,age为:2name为:张三
//Cat 无参构造函数
1.3 构造函数的修饰符
- public 用的最多,用来创建对象
- private 私有化构造函数,不给外部创建对象,比如工具类,或者单例设计模式
- default 默认,只能在当前包里面使用new 创建对象,几乎不用