构造方法

构造方法是一种特殊方法, 使用关键字new实例化新对象时会被自动调用, 用于完成初始化操作.
new 执行过程(创建一个对象分几步)
1.为对象分配内存空间
2.调用对象的合适的构造方法
语法规则
1.方法名称必须与类名称相同
2.构造方法没有返回值类型声明
3.每一个类中一定至少存在一个构造方法,如果一个雷没有写构造方法,那么编译器会为当前类生成一个默认的不带参数的构造方法

//验证:如果一个雷里没有调用构造方法,编译器是否会默认调用没有参数的构造方法
class Person{
     
    private int age;
    private String sex;
    private String name;

    public Person(){
     
       System.out.println("调用了不带参数的构造方法!");
    }

}

public class TestDemo {
     
    public static void main(String[] args) {
     
         Person person1=new Person();//new了一个对象,但没有写构造方法,
    }
}

只要自己写了构造方法,那编译器就不会自动生成不带有参数的构造方法了,自己写构造方法时,可以同时对变量进行初始化。

//在写构造方法的同时,对变量初始化
//在写构造方法的同事,对变量初始化
class Student{
     
    private int age;
    private String name1;

    public Student(){
     
        System.out.println("调用了一个不带参数的构造方法");
    }

    public Student(String name1){
     
       this.name1=name1;//在写构造方法的同时,对变量初始化?
       System.out.println("调用了一个带有String参数的构造方法");
    }
    public Student(int age,String name){
     
        this.age=10;
        this.name1="lisi";
        System.out.println("调用了带有两个参数的构造方法");
    }
//
    public String getName1() {
     
        return name1;
    }

    public void setName1(String name1) {
     
        this.name1 = name1;
    }

    public int getAge() {
     
        return age;
    }

    public void setAge(int age) {
     
        this.age = age;
    }

    @Override
    public String toString() {
     
        return "Student{" +
                "age=" + age +
                ", name1='" + name1 + '\'' +
                '}';
    }
}

public class TestDemo {
     
    public static void main(String[] args) {
     
        Student student1 = new Student();
        System.out.println(student1);
        System.out.println("================");
        student1.setName1("caocao");//先调用setName,并把变量设为caocao
        String name = student1.getName1();//然后调用getName,不设置变量,并把调用的getName赋给String name
        System.out.println(student1);//打印name
        
        


    }


}

.
构造方法支持重载. 规则和普通方法的重载一致
重载:1.方法名相同
2.参数列表不同
3.返回值不作要求

class Person{
     
    private int age;
    private String sex;
    private String name;

    public Person(){
     //默认构造函数
        this.age=10;
        this.name="张三";
        this.sex="男";
    }

    public Person(String name,int age,String sex){
     //带三个参数的构造函数
        this.name="张三";
        this.age=10;
        this.sex="男";
    }
    public void show(){
     
    System.out.println("name: "+name+" age: "+age+" sex: "+sex);
    }
}

public class TestDemo {
     
    public static void main(String[] args) {
     
         Person person1=new Person();//调用不带参数的构造方法
         person1.show();
         Person person2=new Person();//调用带三个参数的构造方法
         person2.show();
    }
}

`

你可能感兴趣的:(笔记)