黑马程序员技术交流社区
标题: 自学总结this修饰符的常见用法 [打印本页]
作者: 余清兰 时间: 2012-6-14 17:30
标题: 自学总结this修饰符的常见用法
1、this修饰符用于区分成员变量和函数变量重名的情况。因为如果函数里的参数(局部变量)与类里的成员变量重名了,此时程序会先找局部变量。
- 例:
- class Person
- {
- private String name;
- Person(String name)
- {
- this.name = name;
- }
- public void speak()
- {
- System.out.println("name="+name);
- }
- }
- class PersonDemo
- {
- public static void main(String[] args)
- {
- Person p = new Person("lisi");
- p.speak();
- }
- }
复制代码如果在成员变量name前面不加this修饰符,此代码运行后的结果是name=null;而不是lisi,因为局部变量与成员变量重名了,程序运行后,是把局部变量的null值赋给了name。this代表它所在函数所属对象的引用,也就是说哪个对象在调用this所在的函数,this就代表哪个对象。
2、构造函数间互相调用,要用this();并且此语句只能放在构造函数的第一行。因为初始化动作要先执行,若初始化里还有初始化,就要先把最里面的初始化执行完,再执行外面的初始化。
- class Person
- {
- private String name;
- private int age;
- Person(String name)
- {
- this.name = name;
- System.out.print("name");
- }
- Person(String name,int age)
- {
- this(name);//构造函数之间互相调用用这种格式且必须放在构造函数里的第一行,一般函数调用用Person(name);
- this.age = age;
- }
- }
- class PersonDemo
- {
- public static void main(String[] args)
- {
- Person p = new Person("lisi");
- }
- }
复制代码总结:当定义类中功能(函数)时,该函数内部要用到调用该函数的对象时,这时用this来表示这个对象。只要本类功能内部使用到了本类对象,都用this表示。一般函数是不能直接调用构造函数的,因为this不能用于一般函数,只在构造函数间调用。
作者: sbeeqnui1987 时间: 2012-6-14 20:54
this可以看做是一个变量,它的值是当前对象的引用。本身peel(Apple apple)这个方法调用的时候需要一个形式参数,就是一个Apple对象,所以要传给它一个apple对象。
书上的写法有点绕,只是想你明白this这个关键字,如果你这样做:
Apple a=new Apple(); 那么程序就可以这样写了:
classic Apple {
Apple getPeeled(){return Peeler.peel(a);
这样很明显看出,this就是代表了一个Apple类的对象。
一般来说,this关键字用来处理成员变量和参数重名的情况。例如:
class Example
{
private String name; //成员变量只能用类的对象去使用
void setName(String name)
{
//this.name表示是成员变量,把形式参数name的值传给成员变量
this.name=name;
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |