请问java中this指的是什么?(含具体代码)

  • this关键字
    >1.通过this关键字可以明确去访问一个类的成员变量,解决局部变量和成员变量名称冲突问题
    >2.通过this关键字调用成员方法,this可以省略不写
    >3.构造方法是在实例化对象时被Java虚拟机自动调用的,在程序中不能像调用其他方法一样去调用构造方法,但可以在一个构造方法中使用“this([参数类1,参数2,……])”的形式来调用其它的构造方法

在下面代码中,this指的是哪些

 package cn.itcast.player;
import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

class Cardlayout extends Frame implements ActionListener{
    Panel carPanel = new Panel();
    Panel contPanel = new Panel();
    Button nexButton,preButton;
    CardLayout cardLayout=new CardLayout();
    public Cardlayout() {
        // TODO Auto-generated constructor stub
        setSize(300,200);
        setVisible(true);
        this.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                Cardlayout.this.dispose();
            }
        });
        carPanel.setLayout(cardLayout);
        carPanel.add(new Label("第一个界面",Label.CENTER));
        carPanel.add(new Label("第二个界面",Label.CENTER));
        carPanel.add(new Label("第三个界面",Label.CENTER));
        nexButton =new Button("下一个界面");
        preButton =new Button("上一个界面");
        nexButton.addActionListener(this);
        preButton.addActionListener(this);
        contPanel.add(preButton);
        contPanel.add(nexButton);
        this.add(carPanel,BorderLayout.CENTER);
        this.add(contPanel,BorderLayout.SOUTH);
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        if (e.getSource()==nexButton) {
            cardLayout.next(carPanel);
        }
        if (e.getSource()==preButton) {
            cardLayout.previous(carPanel);
        }
    }
}
public class Example2{
    public static void main(String[]args) {
        Cardlayout cardlayout = new Cardlayout();
    }
}

谢谢做答

说了那么多,,,起始this一句话就可以描述,就是“当前对象”

【1】“解决局部变量和成员变量名称冲突问题”,,这个经常出现,,
很好理解,一个事对象的属性,一个事局部变量(this作为当前对象,调用属性理所应当)

【2】“在下面代码中,this指的是哪些”
题主可能把this理解难了,,
代码中这个代码中的this题主都可以看作是,main方法中创建的这个对象“ Cardlayout cardlayout = new Cardlayout();”

其中这个比较特别:“Cardlayout.this.dispose();”,,含义是一样的只是形式不同,解释如下:

 this.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                Cardlayout.this.dispose();
            }
        });

此处使用到了匿名内部类,,“ Cardlayout.this.dispose();”
这句代码没有在当前类中,而是在一个内部类中,,如果使用this的话指代的是匿名内部类的对象,,所以需要使用Cardlayout.this(类名.this)

有问题还可以追问,,,对你有帮助,,请采纳

Cardlayout 这个类的自己

this是指Frame吗?还是CardLayout?

this其实就是一个引用,只不过这个引用优点特殊,普通的引用调用方法,是根据引用指向的具体对象,你在编译的时候基本就知道是哪个对象调用,当然不包含多态的情况,this是动态的,他调用的成员变量和方法,是根据当前调用该方法的对象决定的,哪个对象调用了这个方法,this就指向了哪个对象

this 表示当前类对象 Cardlayout

最简单的话来理解,谁是调用者谁就是this

java是面向对象编程 ,this指的的对象本身

类似汉语中的“在下”

Java是以花括号{ }做闭包,this的作用域在当前使用的花括号之中,代表的是当前类对象。

public void setMachineNum(Integer machineNum) {
this.machineNum = machineNum;
}
set方法里面理解一下。this就是调用这个方法的对象

this 就是 调用者