java中this调用构造方法与对返回类实例
java中this常用有三种功能分别是:引用成员变量,调用构造方法,返回类实例。第一种功能比较容易理解,实际上也就是防止对象属性与方法中形参名相同。
哦对 顺便说下this的概念:this代表调用这个函数的对象。 其实和python中的self类似。
java中this调用构造方法
使用格式如下:
1 2 |
this([参数列表]) |
系统将根据参数列表来决定调用哪一个构造方法。使用this时还需注意下面几点:
- 用this调用构造方法时,该语句只能用在构造方法中。
- this语句必须是构造方法中的第一条语句。
- 和new不同,this虽然可以调用构造方法,但它只是执行构造方法中的语句,并不会创建对象。
(百度网友淡忘WHY66的回答)
举个例子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
package cn.rui0; public class Testhis { public Testhis() { this(911);//调用有参的构造方法 必须放在第一行 System.out.println("无参"); } public Testhis(int i) { System.out.println(i+"\n"+"有参"); } public static void main(String[] args) { Testhis a=new Testhis();//创建对象的同时会调用无参的构造方法 } } |
output:
1 2 3 4 5 |
911 有参 无参 |
好的,接下来说
java中this返回类实例
可以理解为返回类的对象,然后…要说的都在下面了..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
package cn.rui0; public class Testhis { int i; int num; public Testhis() { this(911);//必须放在第一行 num=100; System.out.println("无参"); } public Testhis(int i) { this.i=i+1; System.out.println(this.i+"\n"+"有参"); } public Testhis aaa(){ //这里定义的返回值类型为Testhis这个类 num++; return this; } public static void main(String[] args) { Testhis a=new Testhis();//创建对象的同时会调用无参的构造方法 Testhis b=new Testhis();//创建另一个对比 System.out.println("*********************"); System.out.println(a);//输出实例化的类的对象a的地址 System.out.println(a.aaa()); /* * 输出时运行了这个实例化的类的对象a中的方法aaa() * 而方法aaa()中返回了当下调用这个方法的对象a(因为用的是this所以是当下调用这个方法的对象a,而不是b) * 并且类型为Testhis,可以理解为又成为属于Testhis的一个对象,就是又有了Testhis类下的一波属性什么的 * 所以输出的地址和上面a的一样,并且可以进行像下面这样的输出 */ System.out.println(b);//先对比一下输出地址 是不一样的对象 好了没它事了 System.out.println(a.aaa().getClass().getName ());//获取当前类名 System.out.println(a.num);//获取当前类实例化对象的属性 System.out.println(a.aaa().num); // 这部分可能有点抽象,本辣鸡打字可能也没说太清,大家不懂可以再多去对比几次的输出的语句和output去理解 } } |
output:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
912 有参 无参 912 有参 无参 ********************* cn.rui0.Testhis@7852e922 cn.rui0.Testhis@7852e922 cn.rui0.Testhis@4e25154f cn.rui0.Testhis 102 103 |
注意:
被static修饰的方法没有this指针。因为被static修饰的方法是公共的,不能说属于哪个具体的对象的
感谢阅读,如果有错误非常欢迎指出~thx 🙂
近期评论