构造方法

引言

构造方法很重要,但是比较鸡肋

定义

构造方法(Constructor)的名称和类名相同,没有返回值类型。

作用

类中的特殊方法,用于创建对象,在创建对象的时候会执行一些初始化操作,如给成员属性赋初值

格式

格式:
    类名([参数...]){}
    Student(){}

注意:格式问题

1、构造方法的方法名与类名完全相同

2、构造方法没有返回值类型

3、创建对象时,触发构造方法的调用,不可手动调用

4、如果没有声明构造方法,编译器默认生成无参构造方法

5、如果定义了有参构造方法,编译器就不会创建无参构造方法

强制要求

无论什么时候,都要加上一个无参构造方法!!!

构造方法的使用

// 自定义有参构造方法,并给name属性赋值
Dog(String n) {
    name = n;
}

// 自定义无参构造方法
Dog(){}

构造方法的重载

public Dog(String n){
    name = n;
}

public Dog(String n, int i){
    name = n;
    age = i;
}

总结

  1. 构造方法是用来创建对象,在创建对象的过程中会进行初始化操作(为对象赋值)
  2. 构造方法也是方法,除了没有返回值,其他的都跟方法一样

按照方法参数列表的类型、个数、顺序去匹配,如果没有找到对应的就会报错

  1. 无论什么时候,都一定要给一个无参构造方法

扩展:反编译

javap -c -l -private 类名.class

扩展:对象的创建过程

1、类加载
2、内存中开辟对象空间
3、为各个属性赋予初始值
4、执行构造方法中的代码
5、将对象的地址赋值给变量

this关键字

概述

this代表所在类的对象引用,即当前对象

new 创建出来的对象

调用方法的对象

作用

1、调用本类中的属性和方法(区别成员变量和局部变量)

2、调用本类中的其他构造方法:this()

格式:
    this([参数...]);

会根据参数列表调用对应的构造方法
public Rabbit(String color) {
    // 调用本来中的属性
    this.color = color;
}

public Rabbit(String color, int age, double weight) {
    // 调用本类中的其他构造方法
    this(color);
    
    this.age = age;
    this.weight = weight;
}

【注意】

1、this()只能在构造方法中使用
2、this()只能在第一行
3、构造方法中不能同时出现两个this(),因为2
4、不能自己调用自己,不能相互调用

规范化this()

class Son {
    String name;
    int age;
    float salary;

    public Son() {
    }

    public Son(String name) {
        // 调用Son(String name, int age, float salary)
        this(name, 0, 0.0F);
    }

    public Son(String name, int age) {
        // 调用Son(String name, int age, float salary)
        this(name, age, 0.0F);
    }

    public Son(String name, int age, float salary) {
        this.name = name;
        this.age = age;
        this.salary = salary;
    }
}

总结

  • this表示的是当前对象
  • this可以调用本类中的属性和方法,最常用与区分成员变量和局部变量
  • this还可以调用本类中的构造方法,但是要注意有坑
最后修改:2021 年 01 月 24 日 12 : 34 PM
如果觉得此文章有用,请随意打赏