美文网首页
关键字this

关键字this

作者: hellokitty小丸子 | 来源:发表于2019-08-21 15:55 被阅读0次

不知道在学习java的小伙伴,有没有跟我一样直到今天才真正明白this到底是干啥的?

一、关键字this指示什么?

说到this,就不得不提显示参数和隐式参数了。在每一个方法中,关键字this表示隐式参数。
例:

class people
{
    // 实例域
    private String name;
    private String six;
    private int yearsOld;
    
    //构造器
    public people(String n, String s, int y)
    {
        name = n;
        six = s;
        yearsOld = y;
    }

    //方法
    public void  nextYearsOld(int year)
    {
        int nextYear = yearsOld + year;
    }
}

将此人的年龄增加1岁:

people peopleYearsOld = new people();
peopleYearsOld.nextYearsOld(1);

nextYearsOld方法有2个参数:

显示参数:

一个为显式参数,位于方法名后面括号中的数值,是明显列在方法声明中的,即year。

隐式参数:

一个为隐式参数,是出现在方法名前的people类对象,没有出现在方法声明中,即peopleYearsOld。

具体实现来说就是:

int nextYear = peopleYearsOld.yearsOld + year;
关键字this方式

nextYearsOld方法可以用下列方式编写,程序员更偏爱这种风格,因为这样可以将实例域与局部变量明显地区分开来:

public void nextYearsOld(int year)
{
    int nextYear = this.yearsOld + year
}
二、应用:

最常用它的地方是在编写构造器和方法时,将参数命名为实例域。参数变量用同样的名字将实例域屏蔽起来。
例:这种方式有一个缺陷,只有阅读代码才能够了解参数n、s、y参数的含义。

  public people(String n, String s, int y)
    {
        name = n;
        six = s;
        yearsOld = y;
    }

它可以写成这种方式,也是常用的技巧:
将参数命名为name,name将引用这个参数,而不是实例域。但是,可以用this.name的形式访问实例域。如上述所说,this指示隐式参数,也就是所构造的对象。

  public people(String name, String six, int yearsOld)
    {
        this.name = name;
        this.six = six;
        this.yearsOld = yearsOld;
    }

备注:
实例域:对象中的数据称为实例域,就是这个对象自己的域,用来存放将要操作的数据。如:如果把一个人看作一个对象,这个人有姓名、性别、年龄。那么姓名、性别、年龄就可以理解为人这个对象的域。

相关文章

网友评论

      本文标题:关键字this

      本文链接:https://www.haomeiwen.com/subject/ubnbsctx.html