Java Eclipse 中 在类与方法调用中 (this)的用法

第一个类
public class Menu {
Do shiyong = new Do();
public void erji(){
System.out.println("\n\n\n\n\n\n\n\n\n\n\n\n\n");
System.out.println("\n***************************************************************************************************");
System.out.println("\t\t\t\t 1. 客 户 信 息 管 理\n");
System.out.println("\t\t\t\t 2. 购 物 结 算 \n");
System.out.println("\t\t\t\t 3. 真 情 回 馈\n ");
System.out.println("\t\t\t\t 4. 注 销 \n\n");
System.out.println("\n***************************************************************************************************");
System.out.println("请选择操作: ");
shiyong.erji(this);
}
第二个类 (被调用的类)
public class Do {
public void erji(Menu Menu){
i = input.nextInt();
if(i==1){
Menu.sanji_1();
}else if(i ==2 ){
Menu.sanji_2();
}else if(i ==3 ){
Menu.sanji_3();
}else if(i ==4 ){
Menu.yiji();
}else {
System.out.println("输入有误");
}
}
}

以上两个代码为例 ,请问高手 第一个类中的最后一句话 shiyong.erji(this); 中为什么要用这个this 如果不是 是不是可以用其他东西代替???
还有就是 这个 this 是干嘛用的 ,我最近学的比较迷糊,Java学到了 类与方法,总是搞不清楚.....往说的详细一些 万分感谢....

this表示类实例本身。
this的用法
1、表示对当前对象的引用!
public class A{
public A getA(){
return this;//表示获取当前实例本身
}
}
2、表示类的成员变量,而非函数参数,注意在函数参数和成员变量同名是进行区分!
public class A{
private int a = 0;//位置1
public A getA(int a){
this.a = a;//前面this.a表示 位置1 的a,赋值=号右侧的表示参数a
}
}
3、用于在构造方法中引用满足指定参数类型的构造器。
public class A{
public A(int a){
}
public A(){
this(1);//这里调用自身的构造函数public A(int a){
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-12-16
this这里指是当前类的一个实例,这里完全可以用new Menu()代替

当一个类中全局变量和局部变量重名时,通过this可以区分开:

如:
public class A{

int i = 2 ; //qu ju bian liang

public void set(int i){
this.i = i; //这里左边是全局变量i,右边是方法参数i
}

public void f(){
int i = 3 ;
System.out.println(i); //输出3
System.out.println(this.i); //输出全局变量(类变量)2
}

public static void main(String[] args){
new A().f();
}
}本回答被提问者采纳
第2个回答  2010-05-31
this只能用在方法或构造方法中,用于获得调用当前的构造方法和方法的对象引用

public class DemoD {
private int c,d;

DemoD(int a,int b) //构造方法
//这里用到了this意思是说将方法中声明的a参数传给左面前面声明的属性c
//主要是为了辨认属性,让代码增强可读性
{
this.c = a;
this.d = b;
}
public void add() //方法
//用this来表示当前的属性
//可以写成return a+b;
{
return this.a+this.b;

}

}

至于shiyong.erji(this);可以用new 类名();取代
第3个回答  2010-05-21
你这两个类中有两个名字相同的erji方法,但其实他们没有任何关系,仅仅是名字一样而已,区分他们主要看参数,Do类中的erji方法有一个Menu类类型参数,所以调用时需要传一个Menu对象,正好你在Menu对象中调用,这时候就可以用this表示把本类作为参数传递过去。
第4个回答  2010-05-21
在没回答你之前,我想说你最好还是找个老师给你讲讲,有些东西看很多天不如老师一节课

this只能用在方法或构造方法中,用于获得调用当前的构造方法和方法的对象引用

public class DemoD {
private int c,d;

DemoD(int a,int b) //构造方法
//这里用到了this意思是说将方法中声明的a参数传给左面前面声明的属性c
//主要是为了辨认属性,让代码增强可读性
{
this.c = a;
this.d = b;
}
public void add() //方法
//用this来表示当前的属性
//可以写成return a+b;
{
return this.a+this.b;

}

}

至于shiyong.erji(this);可以用new 类名();取代

祝你自学成功
相似回答