Java中this的基础用法
update on 2019-07-07
在Java核心技术一书中看到调用方法时this作为隐式参数传入的。
突然间许多问题都懂了
比如:方法的多态
父类变量指向子类对象的引用
对象变量指向的实际类型
虚拟机提取实际类型方法表
搜索对应方法签名(方法名称与参数类型)的类
调用方法的时候是子类覆写过的方法。
---------
1.this表示类中的属性
如下我们的有参构造方法中。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public class Person { 2 private String name; 3 private int age; 4 5 public Person(String name, int age) { 6 //this调用本类属性进行赋值 7 this.name = name; 8 this.age = age; 9 } 10 @Override 11 public String toString() { 12 return "Person{" + 13 "name='" + name + '\'' + 14 ", age=" + age + 15 '}'; 16 } 17 }
如果我们把构造方法中的this去掉。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public class Person { 2 private String name; 3 private int age; 4 5 public Person(String name, int age) { 6 //去掉this,那么结果会怎么样呢? 7 name = name; 8 age = age; 9 } 10 @Override 11 public String toString() { 12 return "Person{" + 13 "name='" + name + '\'' + 14 ", age=" + age + 15 '}'; 16 } 17 }
这是构造方法中并没有给类的属性去赋值,所以Person中的属性依然是默认值。
2.使用this调用构造方法
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public class Person { 2 private String name; 3 private int age; 4 5 public Person() { 6 } 7 8 public Person(String name, int age) { 9 //使用this调用上面的无参构造方法 10 //构造方法在实例化对象时被自动调用,使用this须放在第一行 11 this(); 12 this.name = name; 13 this.age = age; 14 } 15 }
3.this表示当前对象
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public class Person { 2 private String name; 3 private int age; 4 5 public Person(String name, int age) { 6 this.name = name; 7 this.age = age; 8 } 9 public String getPersonInfo(){ 10 return "调用方法的当前对象->"+this; 11 } 12 }
那个对象调用了类中的方法,则this就表示那个对象。
结尾:这是我的第一篇博客,很简单,却也很开心。搁置已久,想开始又不知从何写起。望君坚持!
@Author: qiuling
@Date: 2018/11/8 21:25