6-4 内部类

package innerclass;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.Timer;

public class InnerClassTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

    }

    /**
     * 1.
     * 内部类可以访问该类所定义作用域的数据
     * 对同一个包里的其他类隐藏起来
     * 编写大量代码时,使用匿名内部类更便捷
     * 
     * 
     * 
     * 2.编译器会给内部类一个默认构造方法
     * 
     * 
     * 3.内部类的特殊语法规则
     * ActionListener listener = this.new TimePrint();
     *     if (TalkingClass.this.beep) {
     * 
     * 
     * 内部类中不能有静态方法
     * 
     * 
     * 
     * 内部类是否有用,安全,必要?   。。。。。略
     */
}


class TalkingClass{
    private int intervel;
    private boolean beep;
    
    
    public void start(){
        
//        ActionListener listener = this.new TimePrint();
        ActionListener listener = new TimePrint();
        new Timer(intervel, listener).start();
    }
    
    
    public class TimePrint implements ActionListener{//内部类
        
        /*
         * 编译器会生成一个默认的构造器
         * public TimePrint(TalkingClass talkingClass){
            outer = talkingClass;
        }*/

     /*   @Override
        public void actionPerformed(ActionEvent e) {
            if (beep) {//outer.beep
                Toolkit.getDefaultToolkit().beep();
            }
        }*/
        
        //内部类的特殊语法规则
        @Override
        public void actionPerformed(ActionEvent e) {
            if (TalkingClass.this.beep) {
                Toolkit.getDefaultToolkit().beep();
            }
        }
    }
    
}

 
原文地址:https://www.cnblogs.com/lxh520/p/8269998.html