• java笔记局部内部类认识与理解


    java内部类

    内部类应用最多的场景是在编写GUI程序时,将大量的事件监听处理放在了内部类中进行

    --如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3885340.html "谢谢--

    局部内部类:
    1.在java中将类定义在方法的内部,成为局部内部类。
    2.此类不能使用public、private修饰,
    3.其作用域被限定在声明此类的方法中。
    4.和其他内部类相比,它具有可以访问方法参数的优点。
    5.被局部内部类使用的方法参数必须是final的。

    例如:
    public void funtion(){
    class ObjectA{}
    }
    注意:由于局部内部类并不可见,因此不如使用匿名内部类替代。
    只有当需要定义或重写类的构造方法,或者需要多个类的对象时,才建议使用局部内部类。

    例1:

    /**
    * 局部内部类的实现信息录入
    *
    * @author XIEHEJUN
    *
    */

    package com.xhj.OOP;
    public class InerClass {
    /**
    * 学校名称
    */
    private String schoolName;
    /**
    * 入学时间
    */
    private String inTime;
    /**
    * 离校时间
    */
    private String outTime;

    /**
    * 初始化数据
    *
    * @param schoolName
    * @param inTime
    * @param outTime
    */
    public InerClass(String schoolName, String inTime, String outTime) {
    this.schoolName = schoolName;
    this.inTime = inTime;
    this.outTime = outTime;
    }

    /**
    * 获取学校名称
    *
    * @return
    */
    public String getSchoolName() {
    return schoolName;
    }

    /**
    * 获取入学时间
    *
    * @return
    */
    public String getInTime() {
    return inTime;
    }

    /**
    * 获取离校时间
    *
    * @return
    */
    public String getOutTime() {
    return outTime;
    }

    /**
    * 局部内部类实现人员添加
    *
    * @param name
    */
    public void addUser(String name) {
    /**
    * 学生姓名
    */
    final String userName = name;
    /**
    * 局部内部类
    *
    * @author XIEHEJUN
    *
    */
    class Inner {
    public void print() {
    System.out.println("\t" + userName + "\t" + schoolName + "\t"
    + inTime + "\t" + outTime);
    }
    }
    new Inner().print();

    }

    public static void main(String[] args) {
    InerClass input = new InerClass("A", "20100901", "20140624");
    System.out.println("\t姓名\t学校\t入学时间\t\t离校时间");
    input.addUser("李伟");
    input.addUser("小红");
    input = new InerClass("B", "20090901", "20130625");
    input.addUser("李小伟");
    input.addUser("小小红");
    }

    }

    例2:

    package com.xhj.OOP;

    import java.awt.Toolkit;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.text.SimpleDateFormat;
    import java.util.Date;

    import javax.swing.JOptionPane;
    import javax.swing.Timer;

    /**
    * 局部内部类实现时钟提示
    *
    * @author XIEHEJUN
    *
    */
    public class InnerAlarmClock {
    /**
    * 定义延迟时间
    */
    private int delay;
    /**
    * 电脑是否发出声音
    */
    private boolean flag;

    /**
    * 类初始化
    *
    * @param delay
    * @param flag
    */
    public InnerAlarmClock(int delay, boolean flag) {
    this.delay = delay;
    this.flag = flag;
    }

    /**
    * 局部内部类
    */
    public void start() {
    class Printer implements ActionListener {

    @Override
    /**
    * 局部内部类动作监控
    */
    public void actionPerformed(ActionEvent e) {
    //格式化当前日期
    SimpleDateFormat sdf = new SimpleDateFormat("k:m:s");
    String result = sdf.format(new Date());
    System.out.println("当前时间是:" + result);
    //判断是否发出声音
    if (flag) {
    Toolkit.getDefaultToolkit().beep();
    }
    }
    }
    new Timer(delay, new Printer()).start();
    }

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    InnerAlarmClock clock = new InnerAlarmClock(1000, true);
    clock.start();
    //弹出消息对话框
    JOptionPane.showMessageDialog(null, "是否退出?");
    System.exit(0);

    }
    }

  • 相关阅读:
    [Leetcode]-- Median of Two Sorted Arrays
    Implement strStr()
    [Leetcode]-- Remove Element
    3Sum
    推荐一个跨平台内存分配器
    ACE的缺陷
    详谈高性能UDP服务器的开发
    vi查找替换命令详解
    gcc多版本切换
    Centos 5.5升级Python到2.7版本
  • 原文地址:https://www.cnblogs.com/XHJT/p/3885340.html
Copyright © 2020-2023  润新知