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

请问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)

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(10条)

报告相同问题?

悬赏问题

  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 关于#python#的问题:自动化测试