java 构造器/构造方法、this 理解

基本定义

构造方法也叫构造器(constructor),是类的一种特殊的方法,它的主要作用是完成新对象的初始化,有以下几个特点:

  • 方法名和类名相同
  • 没有返回值
  • 在创建对象时,系统会自动调用该类的构造器完成对对象的初始化
  • 一个类可以有多个不同的构造器,即构造器重载
  • 构造器是完成对象的初始化,而不是创建对象,系统调用构造器时,对象已经被创建好
  • 如果程序员没有定义构造方法,系统会自动给类生成一个没有参数的构造方法,即无参构造方法。而如果程序员已经自定义了构造方法,系统就不会再自动生成无参构造方法,此时如果需要用到无参构造方法,需要程序员手动的显式定义无参构造方法

基本语法:

[修饰符]  方法名(形参列表){

        方法体;

}

注:修饰符可以是默认、public、protected、private中的一种

对象创建流程详解

以以下代码为例进行说明:

public class Test {
    public static void main(String[] args){
        Person p = new Person("张三", 18);
    }
}
class Person {
    int age = 90;
    String name;

    public Person(String n, int a){
        name = n;
        age = a;
    }
}

上述代码的创建流程如下:

  1. 首先加载 Person 类信息(Person.class),只会加载一次
  2. 在堆中为对象分配空间
  3. 完成对象初始化
    1. 先进行默认初始化:age = 0;name = null;
    2. 再进行显式初始化:age = 90;name = null;
    3. 构造器初始化:age = 18;name = “张三”;
  4. 把对象在堆中分配到的空间地址返回给变量 p 

如下图所示

this理解

如下图,this指向创建的当前对象。 

this使用细节

  • this 关键字可以用来访问本类的属性、方法和构造器
  • this 用于区分当前类的属性和局部变量
  • 访问成员方法的语法:this.方法名(参数列表);
  • 访问构造器语法:this(参数列表);注意只能在构造器中使用,即只能在构造器中访问另外一个构造器,而且this语句必须放在第一条语句的位置
  • this 不能在类定义的外部使用,只能在类定义的方法中使用
public class Test {
    public static void main(String[] args){
        T t = new T();
        t.f2();
    }
}
class T {
    int age;

    public T(){
        // this 关键字可以用来访问本类的构造器
        // 访问构造器语法:this(参数列表)
        // 只能在构造器中使用,即只能在构造器中访问另外一个构造器,
        // this语句必须放在第一条语句的位置
        this(18);
        System.out.println("T()构造器被调用");
    }

    public T(int age){
        // his 关键字可以用来访问本类的属性
        // this 用于区分当前类的属性和局部变量:
        //     1、this.age 直接访问的是类的属性
        //     2、age 是先查找有没有age这个局部变量,如果没有,再查找累的属性
        this.age = age;
        System.out.println("T(int age)构造器被调用");
    }

    public void f1(){
        System.out.println("f1()方法被调用");
    }

    public void f2(){
        System.out.println("f2()方法被调用");
        // 调用同类方法中的第一种方式:直接调用
        f1();
        // 调用同类方法中的第二种方式:用 this 关键字访问本类的方法
        this.f1();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值