乐趣区

关于java:this在java中的用法

1. 应用 this 关键字援用成员变量

作用:解决成员变量与参数或局部变量命名抵触的问题

public class Dog {
    String name;
    public Dog(String name) {this.name = name;}
}

 

2. 应用 this 关键字援用成员函数。在办法中援用调用该办法的对象

作用:让类中一个办法,拜访该类的另一个办法或实例变量

class Dog {public void jump() {System.out.println("正在执行 jump 办法");
    }
    public void run() {Dog d = new Dog();
        d.jump();
        System.out.println("正在执行 run 办法");
    }
}

public class DogTest {public static void main(String[] args) {Dog dog = new Dog();
        dog.run();}
}

Dog 类中 run 办法调用 jump 办法肯定要通过对象调用,因为 jump 办法并没有被 static 润饰。但不用在 run()办法中从新定义一个 Dog 类,因为 DogTest 类中当程序调用 run()办法时,肯定会提供一个 Dog 对象,这样就能够间接应用这个曾经存在的 Dog 对象,而无须创立新的 Dog 对象。
因而通过 this 关键字就能够在 run()办法中调用该办法的对象

public void run(){this.jump();//Java 容许省略 this 前缀,即可间接写成 jump();
    System.out.println("正在执行 run 办法");
}

static 润饰的办法中不能应用 this 援用
例如:

public class DogTest {public void dog() {System.out.println("汪汪汪");
    }
    public static void main(String[] args){this.dog();    // 报错:Cannot use this in a static context。// 省略掉 this 的状况下:同样报错, 因为在静态方法中, 不能间接拜访非动态成员(包含办法和变量)。非动态的变量是依赖于对象存在的, 对象必须实例化之后, 它的变量才会在内存中存在。// 解决办法:法 1. 将 dog()同样设置为动态  法 2. 先实例化对象, 而后应用对象来调用函数}
}

 

3. 应用 this 关键字在本身构造方法外部援用其它构造方法

在某个构造方法内应用 this(参数列表),即可跳转到其余构造方法

 

4. 用 this 关键字代表本身类的对象

return this 即代表 return 整个本身类

 

 

 


退出移动版