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);

}
}

java笔记--局部内部类认识与理解的更多相关文章

  1. java 笔记(2) —— 内部类的作用

    一.内部类简介 个人觉得内部类没多少研究价值,GUI中的事件响应算是非常典型的应用了. Java内部类其实在J2EE编程中使用较少,不过在窗口应用编程中特别常见,主要用来事件的处理.其实,做非GUI编 ...

  2. Java实现局部内部类的简单应用

    日常生活中,闹钟的应用非常广泛.使用它可以更好地帮助人们安排时间.编写程序,实现一个非常简单的闹钟,控制台会不断输出当前的时间,并且每隔一秒钟会发出提示音.用户可以单击“确定”按钮来退出程序. 思路分 ...

  3. Java笔记:内部类

    1.把一个类放在另一类内部定义,这个定义在其他类里面的类就叫做内部类,包含内部类的类叫做外部类.内部类成员可以直接访问外部类的私有数据,但是外部类不能访问内部类的实现细节. 2.非静态内部类(没有st ...

  4. JAVA面向对象-----局部内部类

    局部内部类 局部内部类概述:包含在外部类的函数中的内部类称之为局部内部类. 访问:可以在包含局部内部类的方法中直接创建局部内部类的对象调用局部内部类的成员. 注意:局部内部类只能访问所在函数的fana ...

  5. java笔记--匿名内部类和静态内部类的理解和使用

    匿名内部类 --如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3889467.html  "谢谢-- 1.由于局部内部类并不可见 ...

  6. java笔记--对信号量Semaphore的理解与运用

    java Semaphore 信号量的使用: 在java中,提供了信号量Semaphore的支持. Semaphore类是一个计数信号量,必须由获取它的线程释放, 通常用于限制可以访问某些资源(物理或 ...

  7. java笔记--关于多线程状态的理解和应用

    关于多线程的状态 --如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3890266.html  "谢谢-- 线程共有6种状态:1 ...

  8. Java学习笔记23---内部类之局部内部类只能访问final的局部变量

    局部内部类是定义在方法体或代码块中的类,在笔记19中已有过简单介绍. 今天要讨论的是局部内部类为什么只能访问为常量的局部变量. 作者: 博客园--蝉蝉 请尊重作者劳动成果,转载请在标题注明“转载”字样 ...

  9. Java基础进阶:内部类lambda重点摘要,详细讲解成员内部类,局部内部类,匿名内部类,Lambda表达式,Lambda表达式和匿名内部类的区别,附重难点,代码实现源码,课堂笔记,课后扩展及答案

    内部类lambda重点摘要 内部类特点: 内部类可以直接访问外部类,包括私有 外部类访问内部类必须创建对象 创建内部对象格式: 外部类.内部类 对象名=new外部类().new内部类(); 静态内部类 ...

随机推荐

  1. 高性能队列Disruptor的使用

    一.什么是 Disruptor 从功能上来看,Disruptor 是实现了"队列"的功能,而且是一个有界队列.那么它的应用场景自然就是"生产者-消费者"模型的应 ...

  2. Getway网关管理ZUUL

    1.ZUUL微服务网关 微服务架构体系中,通常一个业务系统会有很多的微服务,比如:OrderService.ProductService.UserService...,为了让调用更简单,一般会在这些服 ...

  3. feignClient中修改ribbon的配置

    1.使用@FeignClient注解发现服务 服务提供者的controller: @RestController public class StudentController { @Autowired ...

  4. [问题解决]Android7.0上PopupWindow的showAsDropDown位置问题

    [问题解决]Android7.0上PopupWindow的showAsDropDown位置问题 /** * Created by diql on 2017/02/16. */ 问题说明 我的popup ...

  5. JavaScript数据结构-12.散列碰撞(线性探测法)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. (转)在 CentOS7 上安装 MongoDB

    在 CentOS7 上安装 MongoDB 1 通过 SecureCRT 连接至 CentOS7 服务器: 2 进入到 /usr/local/ 目录: cd /usr/local 3 在当前目录下创建 ...

  7. WPF中使用RenderTransformOrigin来控制动画的起点

    Render :渲染:Transform:动画:Origin:起点 RenderTransformOrigin:渲染动画的起点 取值为一个坐标的形式  取值范围: 0,0 到 1,1 0,0:表示左上 ...

  8. JVM内存模型和垃圾回收

    Java开发有个很基础的问题,虽然我们平时接触的不多,但是了解它却成为Java开发的必备基础——这就是JVM.在C++中我们需要手动申请内存然后释放内存,否则就会出现对象已经不再使用内存却仍被占用的情 ...

  9. [转]emailjs-smtp-client

    本文转自:https://github.com/emailjs/emailjs-smtp-client/blob/master/README.md SMTP Client SMTP Client al ...

  10. H5+MUI上传文件

    应用场景:MUI+H5+WEBAPI 今天在给我外甥女调手机端上传图片的时候,发现他是直接调用的MUI下的api,直接调取相册或者相机,到最后只看见了一个文件的路径,所以以前写的上传文件就不太好套上去 ...