超量学习 | 增加一篇 | 深入理解Java基础关键字强大的THIS
前言:不哗众取宠,深入理解是走向基础,面向基础的方法。 如何引入this?
如果我们使用方法时传入的参数名和类方法中已有的参数名相同怎么办?
比如我们传入参数名为a,结果类的方法定义参数时也用的a,不可能写做a=a,所以用this.a=a来区分,this.a代表域变量,a代表参数变量。
1. This的基础知识 | 可以对域变量和参数变量做区分
这是一个构造方法,构造方法用来初始化一个类,因为在构造方法常常需要获取外部传入的参数:
Person(float stature,String name){
this.stature=stature;
this.name=name;
}
其中this就可以解决局部变量和域同名(this.stature,this.name)遇到的问题,this的本质是:在使用this时,把(当前)对象本身当作第一个参数传入使用的方法。
2. This的基础知识 | 可以使用this访问类的字段和方法
这相当于是this的一个附加作用,因为访问效果是一样的,实战代码:
void sayHi(){
System.out.println("哈喽,愿你有一个快乐的夏天,开心的秋天啦!,我是" + name);
}
和
void sayHi(){
System.out.println(""哈喽,愿你有一个快乐的夏天,开心的秋天啦!,我是" + this.name")
}
两个方法和构造方法访问的字段都是指的是当前对象实例本身的name,所以得到的结果也是一样的。
3. This的基础知识 | 可以用this构造调用已有的构造
构造方法中,用this调用另一构造方法,减少代码量,增加抽象构造。
属于三点中最强大的一点,相当于是必须的规则化,规范化的写法。实战代码:
- 在构造方法中调用其他构造方法是,必须将
this(年龄,姓名)放在第一句。
Person(){
this(0,"");
code1;
code2;
}
与C++的联系:在Java中,this引用等价于C++的this指针。
代码实战:
public Hire(double salary){
//calls Hire(String,double)
this("社会主义接班人" + nextId,salary);
nextId ++;
}
当调用new Hire(9000)时,Hire(double)构造器将调用Hire(String,double)构造器。
4.如何能够在绝对的技术丰富度,加上类似于矢量图之类的增加其风味性?
有待考究。
资料链接:
1.http://edu4java.com/en/java/constructors-this-java.html

浙公网安备 33010602011771号