11关键字this的使用

11关键字this的使用

一、this是什么

在Java中this的作用和词意很接近:

  • 在方法内部使用,即这个方法所属对象的引用;
  • 在构造器内部使用,表示该构造器正在初始化的对象。

this表是当前对象,可以调用类的属性、方法和构造器。

二、什么时候使用this关键字

当方法内需要用到调用盖房的对象是,就用this。

具体的,可以用this来区分属性和局部变量如比:this.name = name;

三、this修饰属性、方法

this理解为当前对象或者当前正在创建的对象。

在类的方法中,可以使用“this.属性”或者“this.方法”的方式,调用当前对象的属性或方法。但是,通常情况下,选择省略“this.”。特殊情况下,如果方法的形参和类的属性同名时弄西显式的使用“this.变量”的方式来表明此变量是属性而非形参。

在类的构造器中,可以使用“this.属性”或者“this.方法”的方式,调用当前对象的属性或方法。但是,通常情况下,选择省略“this.”。特殊情况下,如果方法的形参和类的属性同名时弄西显式的使用“this.变量”的方式来表明此变量是属性而非形参。

public class PersonTest {
    public static void main(String[] args) {
        Person p1 = new Person("Tom");
        p1.setAge(18);
        p1.show();
        p1.study();
    }
}

class Person{
    //属性
    private int age;
    private String name;

    //构造器
    public Person(String name) {
        this.name = name;
    }

    public Person(int age) {
        this.age = age;
    }

    public Person() {
        this.eat();
    }

    //方法
    public int getAge() {
        return age;
    }

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

    public String getName() {
        return name;
    }

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

    public void show() {
        System.out.println("姓名:" + this.getName() +";年龄:" + this.getAge());
    }

    public void eat() {
        System.out.println("会吃饭");
    }

    public void study() {
        System.out.println("会学习");
        this.eat();
    }
}

四、this修饰构造器

在类的构造器中可以显示的使用“this(形参列表)”的方式,来调用本类中指定的其他构造器;

构造器中不能通过“this(形参列表)”的方式调用自己;

如果一个类中有N个构造器,最多有n-1构造器中使用了“this(形参列表)”;

规定:“this(形参列表)”必须什么在当前构造器的首行;

构造器内部,最多只能声明一个“this(形参列表)”。

public class PersonTest {
    public static void main(String[] args) {
        Person p2 = new Person("Jerry", 22);
        p2.show();
    }
}

class Person{
    //属性
    private int age;
    private String name;

    //构造器
    public Person() {
        this.study();
        System.out.println("this修饰构造器");
    }

    public Person(String name) {
        this();
        this.name = name;
    }

    public Person(String name, int age) {
        this(name);
        this.age = age;
    }

    //方法
    public int getAge() {
        return age;
    }

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

    public String getName() {
        return name;
    }

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

    public void show() {
        System.out.println("姓名:" + this.getName() +";年龄:" + this.getAge());
    }

    public void eat() {
        System.out.println("会吃饭");
    }

    public void study() {
        System.out.println("会学习");
        this.eat();
    }
}

五、练习

添加必要的构造器。综合应用构造器的重载、this关键字。

在这里插入图片描述

public class Boy {
    private String name;
    private int age;

    public Boy() {

    }

    public Boy(String name, int age) {
        this.name = name;
        this.age = age;
    }

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

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void marry(Girl girl) {
        System.out.println("我想娶" + girl.getName());
    }

    public void shout() {
        if (this.age >= 22) {
            System.out.println("可以合法结婚了!");
        } else {
            System.out.println("可以先谈恋爱~~");
        }
    }
}

public class Girl {
    private String name;
    private int age;

    public Girl() {

    }

    public Girl(String name, int age) {
        this.name = name;
        this.age = age;
    }

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

    public String getName() {
        return name;
    }

    public void marry(Boy boy) {
        System.out.println("我想嫁给" + boy.getName());
        boy.marry(this);
    }

    public int compare(Girl girl) {
        return this.age - girl.age;
    }
}

public class BoyGirlTest {
    public static void main(String[] args) {
        Boy boy = new Boy("罗密欧",21);
        boy.shout();

        Girl girl = new Girl("朱丽叶", 18);
        girl.marry(boy);

        Girl girl1 = new Girl("祝英台", 19);
        int compare = girl1.compare(girl);
        if (compare > 0) {
            System.out.println(girl1.getName() + "年龄大");
        } else if (compare < 0) {
            System.out.println(girl.getName() + "年龄大");
        } else {
            System.out.println("年龄一样大");
        }
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值