this 属性调用
从实际使用角度来讲this可以做三件事:
- 调用本类属性
- 调用本类方法(包含普通与构造)
- 表示当前对象(是this最难理解的相对概念)
使用this调用本类属性
调用构造方法有可能会出现重名的问题,为了解决构造方法重名的问题,提高代码的可读性所以需要进入this。
this.属性,表示当前对象中的属性,这样我们就不会和构造方法中的参数名称混了
以后大家在编写方法,调用本类中的属性的时候,强烈建议使用this关键字调用!!!
最佳实践,只要在类的方法中访问有类的属性,那么属性之前一定要追加this关键字
以上就是this调用本类中的属性情况
this调用本类方法
类中的方法一定有两种:
- 普通方法:语法 => this.方法名称(如果有参数就传递参数)
- 构造方法:语法 => this(如果有参数传递参数)
调用普通方法:
以上就是this调用普通方法的情况。
图片.png
事实上不使用this,也能调用本类中的方法,但是最佳实践是加上this,这样的目的是区分方法的定义来源,在继承的时候就很有用了!
this调用构造方法:
this调用构造方法与this调用普通方法最大的区别是
使用new实例化类的新对象的时候使用一次,而成员方法是在构造方法执行完成后,可以执行多次。
在Java中支持类构造方法的互相调用。一个好的代码民工的追求就是没有代码重复!很重要!
如果程序中有重复的代码出现(非方法)那我们就要想办法消灭,比如封装成一个方法等。
图片.png
以上就体现了构造方法中重复的问题。
解决方案:
图片.png
以上就实现了this互相调用构造函数。虽然this可以实现构造方法的互相调用,但是有以下两点要求
- this()调用构造方法的语句必须放在构造方法的首行。否则如下图所示:
图片.png
注意静态方法也无法调用构造方法。构造方法只能通过new关键字或者本类中的其他构造方法调用 -
使用this调用构造方法的时候,请留有出口。否则如下:
图片.png
this表示当前对象
在我们的实际开发中使用到最多的就是this调用本类属性与this调用本类构造方法。但是在this里面有一个非常头疼的属性,"this表示当前对象"。
在一个类之中肯定会产生若干个对象,那么程序类在进行分辨的时候,并不会记住具体有多少个对象产生了。它唯一可能知道的,当前操作本类的对象是哪一个。
代码执行:
图片.png
综上,在整体的操作过程之中,this的定义(就是this这个写法)并没有变,只要有某一个对象调用了本类中的方法,那么类方法中的这个this就表示当前执行方法的那个对象。所以this并不是一个固定的概念,而是一个相对的概念。以后再对这个this的用法进行消化。
网友评论