Java核心技术-内部类(上)

Day7

内部类

定义在另一个类中的类

  • 内部类🙆‍可以都对同一个包中的其他类隐藏
  • 内部类可以访问定义这个内部类的作用域中的属性,包括私有属性

内部类总有一个隐式引用,指向创建它的外部类对象

package cn.gyk;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.time.Instant;

/**
 * @author xg
 * @version V1.0
 * @date 2022/5/28 21:36
 */
public class InnerClassDemo {
    public static void main(String[] args) {
        TalkingClock talkingClock = new TalkingClock(1000,true);
        talkingClock.start();
        JOptionPane.showMessageDialog(null,"Quit program?");
        System.exit(0);
    }
}
class TalkingClock{
    private int interval;
    private boolean beep;
    public TalkingClock(int interval,boolean beep){
        this.interval = interval;
        this.beep = beep;
    }
    public void start(){
        var listener = new TimePrinter();
        var time = new Timer(interval,listener);
        time.start();
    }
    public class TimePrinter implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
            System.out.println("At the tone,the time is"+ Instant.ofEpochMilli(e.getWhen()));
            if(beep)
                Toolkit.getDefaultToolkit().beep();
        }
    }
}

内部类中所有声明的静态变量必须是final,内部类中不允许又static方法

posted @ 2022-05-28 22:15  破忒头头  阅读(31)  评论(0)    收藏  举报