this 关键字的使用及相关使用

this关键字的使用

1. 目前可能出现的问题? 解决问题?

当我们在使用封装时会使用getXxx()方法时,会通过形参给对应的属性赋值。如果形参的名称和属性名称相同时,系统会如何区分两个变量呢?

String name;
public viod setName(String name){
    name = name;
}

此时方法里形参的方法是无法给属性赋值的,方法体里的两个name 都是指像形参。

 这种请款就需要this。具体来讲,使用this修饰的变量就是属性,没有this修饰的变量是形参

2. this可以调用的结构有哪些呢?

        (1)属性(成员变量):已经在1中讲解this调用属性。不能调用局部变量

        (2)方法(函数): 通过this.方法 这样调用的方法

public void eat(){
    System.out.println("人吃饭”);
    sleep();//此时的this. 可以省略
    this.sleep();
}
public void sleep(){
    System.out.println("人睡觉”);
}

此时的this.sleep指的是谁调用的eat()方法,谁在调用sleep() 方法。

        (3) 构造器

class Construct{
    int num;
    String str;
    
    public Construct(){
    }
    
    public Construct(int num){
        this.num = num;//此时this.调用的就是成员变量
    }
    public Construct(int num, String str){
        this(num);//此时就是this调用构造器
        this.str = str;
    }

}

此时的this(num)调用的就是参数只有一个num的构造器。在后期开发中会遇到很多的成员变量,此时造多个构造器都使用this.变量的方法,代码会非常的多,这种就可以有效减少代码量。

可以理解为: 当前对象(在方法调用时) 或 当前正在创建的对象(在构造器调用时)。

针对于方法内的使用情况:准确说时非static静态变量

        一般情况: 我们对过对象a调用方法可以在方法内调用当前对象a的属性或其他方法。此时我们可以在属性和其他方法前使用“this." 。表示当前属性或方法所属的对象啊。但是,一般情况下,我i们都是选择省略次this结构。

        特殊情况: 如果方法的形参与对象的属性重名了,我们必须使用this.进行区分,使用this,修饰的变量为属性(或成员变量),没有this,修饰的变量,即为局部变量。

针对于构造器内使用情况:

        一般情况: 我们通过构造器创建对象时,可以在构造器内调用当前正在创建的对象的属性或方法。此时,我们可以在属性和方法前使用"this."表示当前属性或方法所属的对象。但是在一般情况下,我们会选择省略”this.“结构。

        特殊情况: 如果构造器的形参与正在创建的对象的属性同名了,我们必须使用”this."进行区分,使用this.修饰的变量为属性,没有this.修饰的变量为局部变量。

3、this调用构造器

        格式: ” this.(形参列表)"

        我们可以类的构造器中,调用当前类指定的的其他构造器

        要求:"this.(形参刘表)”必须声明在当前构造器的首行

        结论: “this.(形参列表)” 在构造器中最多声明一个

        如果一个类中声明了n个构造器, 则最多有n-1个构造器可以声明有"this.(形参列表)"的构造器

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值