CG_Dionysus
2017-08-24 01:05
采纳率: 100%
浏览 2.4k
已采纳

请问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();
    }
}

谢谢做答

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

11条回答 默认 最新

  • 鼠小 2017-08-24 01:19
    已采纳

    说了那么多,,,起始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)

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

    点赞 打赏 评论
  • love_Java123 2017-08-24 01:11

    Cardlayout 这个类的自己

    点赞 打赏 评论
  • CG_Dionysus 2017-08-24 01:13

    this是指Frame吗?还是CardLayout?

    点赞 打赏 评论
  • 卖太妃糖的古尔丹 2017-08-24 01:14

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

    点赞 打赏 评论
  • usecf 2017-08-24 01:20

    this 表示当前类对象 Cardlayout

    点赞 打赏 评论
  • 小兔爷 2017-08-24 02:03

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

    点赞 打赏 评论
  • lK先生 2017-08-24 02:14

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

    点赞 打赏 评论
  • shx_凌云 2017-08-24 02:22

    类似汉语中的“在下”

    点赞 打赏 评论
  • 爱是与世界平行 2017-08-24 02:39

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

    点赞 打赏 评论
  • IAmTrudy 2017-08-24 05:59

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

    点赞 打赏 评论
  • 简简单单OnlineZuozuo 2017-08-25 02:21

    this 就是 调用者

    点赞 打赏 评论

相关推荐 更多相似问题