this关键字与构造器转发

构造器重载:

  构造器犹如方法一样可以进行重载,只要参数类型和参数个数不一样就可以。构造器重载就好像提供了多个选择,可以选择无参数构造器可以选择int类型参数构造器、可以选择String类型构造器等等,一个程序往往会有多种情况,构造器重载则可以选择不同的初始化方式。例如:

wKioL1nnhHOQuq-PABBD90LTbFo594.png

如图new不同参数的对象,每个对象的构造方式就不一样


this关键字:

  this表示当前对象,this关键字只能写在实例成员内,实例方法和实例属性可以用this关键字。例如this.name表示的是当前对象的name属性。例如:

wKiom1nnhzfDj-yZABLf4eDyuvw134.png


  在java里不同的区域重名是可以的,大括号内表示一个区域,在大括号以外重名是允许的,java使用变量名称是就近原则。在参数、变量与对象属性重名的情况下就需要使用this来表示,不然会报错,因为编译器不知道你使用的是哪个,所以需要用this指出。




构造器转发:

  使用this可以进行构造器转发,但是this只能写在构造器的第一行代码上,写在其他代码下是会报错的。

wKioL1nnhIySjeTXABAyoNrJ1oA089.png


 main方法里new的是无参数构造器,自然会先执行无参数构造器里的代码,然后遇到构造器转发再去执行对应的构造器里的代码,执行完之后再返回上一个构造器执行this下面的代码。this的括号内写的值会转发到具有对应参数类型的构造器,然后这个构造器会先执行,执行完毕后再到原本的构造器执行,有点类似于方法的递归。

wKiom1nnh0uxOmNoABAyoC7WUzs282.png






本文转自 ZeroOne01 51CTO博客,原文链接:http://blog.51cto.com/zero01/1974038,如需转载请自行联系原作者