this关键字与构造方法

(1)含义:
this是关键字,表示这个对象,本质this存储对象地址。
(2)应用:
1、如果成员变量与局部变量同名时,用于区分成员变量和局部变量。
2、用于访问构造方法。

(3)代码示例

class Person {

    private String name = "刘备";//显示赋值
    private int age = 18;

    public void show() {
        System.out.println(name + "..." + age);//刘备...18
    }

    //getter
    public int getAge() {
        return age;
    }

    public String getName() {
        return name;
    }

    //setter
    public void setAge(int age) {
        if (age > 0 && age <= 120) {//如果年龄在0~120,则录入成功。
            this.age = age;
        }
    }

    public void setName(String name) {
        this.name = name;
    }
}

public class Demo5_封装 {

    public static void main(String[] args) {
        Person p = new Person();
        p.setName("曹操");
        p.setAge(20);

        p.show();//曹操...18
    }
}

构造方法
(1)概念:该方法的作用就是给对象的属性赋值。又称之为构造器。
(2)语法:
访问修饰符 方法名(参数列表){
属性名 = 参数名;

}
访问修饰符:暂时所有构造方法修饰符都是public。代表谁都可以构造该类的对象。
方法名:方法名要与类名一致
参数列表:有参数列表的构造方法,称之为带参的构造方法。无参数列表的构造方法,称之为无参的构造方法。参数个数必须等于或少于类的属性个数。
属性名 = 参数名:构造方法作用十分单一,就是通过参数给属性赋值。

//婴儿类
class Baby {
    private int height;
    private int weight;

    //构造方法
    public Baby(int height, int weight) {
        this.height = height;
        this.weight = weight;
    }


    public int getHeight() {
        return height;
    }

    public void setHeight(int height) {
        this.height = height;
    }

    public int getWeight() {
        return weight;
    }

    public void setWeight(int weight) {
        this.weight = weight;
    }
}


public class Demo7_构造方法 {

    public static void main(String[] args) {
        //需求:模拟婴儿的出生
        //分析:婴儿(身高和体重) 出生(被创建)
        //Baby bb = new Baby();
        //bb.setHeight(60);
        //bb.setWeight(6);
        //问题:bb被创建后,才给他身高和体重。
        //解决:在bb(对象)被创建之前,就必须有身高和体重。>>>构造方法
        Baby bb = new Baby(60, 6);


        System.out.println("身高为:" + bb.getHeight() + "...体重为:" + bb.getWeight());//身高为:60...体重为:6

    }

}

(4)注意点
1)类中默认自带一个隐式无参构造方法。
2)当手动添加构造方法后,原隐式无参构造方法就消失。
3)当手动添加完构造方法后,仍需要使用原隐式构造方法,必须手动显式定义无参数构造方法。
4)构造方法可以使用方法的重载
5)构造方法是有JVM调用执行,程序员无法直接调用。
6)普通方法无法调用构造方法,因为构造方法的调用者不是程序员。
7)构造方法可以调用普通方法,但是一般不会这样用,因为构造方法只做属性赋值。
8)构造方法可以调用构造方法,使用this(参数)来调用。
9)构造方法使用this()调用其他构造方法时,this()必须时构造方法体中的第一句。
10)对象内存中运行流程:1、属性赋默认值 2、属性显式赋值 3、执行构造方法

构造方法内存图解
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值