首页 > 代码库 > java中this关键字
java中this关键字
如果有同意类型的两个对象,分别是a和b,如何让两个对象都能调用某个方法呢?
如
1 class Banana { 2 void peel(int i ){ 3 /*……*/ 4 } 5 public class BananaPeel { 6 public static void main(String[] args){ 7 Banana a = new Banana(); 8 Banana b = new Banana(); 9 a.peel(1);10 b.peel(2);11 }12 }13 }
如果只有一个peel方法,它如何知道是被a还是被b调用的呢?
为了能用简便、面向对象的语法来编写代码,即“发送消息给对象”,编译器做了一些幕后工作。它暗自把所操作对象的引用作为第一个参数传递给peel,因此上面的两个方法就变成了
Banana.peel(a, 1);Banana.peel(b, 2);
这是内部表示形式,我们不能这么写!
假设你希望方法的内部获得对当前对象的引用,由于这个引用时由编译器偷偷传入的,所以没有标识符可用,但是,为此有个专门关键字:this。this关键字只能在方法内部使用,表示对“调用方法的那个对象”的引用。this用法和其他对象并无不同。但要注意,如果方法内部调用同一个类的盈利一个方法,就不能使用this。直接调用即可。即可以这样写:
public class Apricot{ void pick(){ /*……*/ } void pit(){ pick(); /*……*/ }}
在pit内部,可以写this.pick();但是无必要,编译器可自动添加。
this关键字对于将当前对象传递给其他方法也是很有用的。如:
1 class Person{ 2 public void eat(Apple apple){ 3 Apple peeled = apple.getPeeled(); 4 System.out.println("Yummy"); 5 } 6 7 class Peeler(){ 8 static Apple peel(Apple apple){ 9 return apple;10 }11 }12 13 class Apple {14 Apple getPeeled(){15 return Peeler.peel(this);16 }17 }18 19 public class PassingThis{20 public static void main(String[] args){21 new Person.eat(new Apple());22 }23 }24 25 }
这里Apple 需要调用Peeler.peel()方法,他是一个外部的工具方法,将执行由于某种原因而必须放在Apple外部的操作,为了将其自身传递给外部方法,Apple必须使用this关键字。
以上就是this的基本用法,复杂用法留待以后补充。
java中this关键字
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。