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);
}
}
java笔记--局部内部类认识与理解的更多相关文章
- java 笔记(2) —— 内部类的作用
一.内部类简介 个人觉得内部类没多少研究价值,GUI中的事件响应算是非常典型的应用了. Java内部类其实在J2EE编程中使用较少,不过在窗口应用编程中特别常见,主要用来事件的处理.其实,做非GUI编 ...
- Java实现局部内部类的简单应用
日常生活中,闹钟的应用非常广泛.使用它可以更好地帮助人们安排时间.编写程序,实现一个非常简单的闹钟,控制台会不断输出当前的时间,并且每隔一秒钟会发出提示音.用户可以单击“确定”按钮来退出程序. 思路分 ...
- Java笔记:内部类
1.把一个类放在另一类内部定义,这个定义在其他类里面的类就叫做内部类,包含内部类的类叫做外部类.内部类成员可以直接访问外部类的私有数据,但是外部类不能访问内部类的实现细节. 2.非静态内部类(没有st ...
- JAVA面向对象-----局部内部类
局部内部类 局部内部类概述:包含在外部类的函数中的内部类称之为局部内部类. 访问:可以在包含局部内部类的方法中直接创建局部内部类的对象调用局部内部类的成员. 注意:局部内部类只能访问所在函数的fana ...
- java笔记--匿名内部类和静态内部类的理解和使用
匿名内部类 --如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3889467.html "谢谢-- 1.由于局部内部类并不可见 ...
- java笔记--对信号量Semaphore的理解与运用
java Semaphore 信号量的使用: 在java中,提供了信号量Semaphore的支持. Semaphore类是一个计数信号量,必须由获取它的线程释放, 通常用于限制可以访问某些资源(物理或 ...
- java笔记--关于多线程状态的理解和应用
关于多线程的状态 --如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3890266.html "谢谢-- 线程共有6种状态:1 ...
- Java学习笔记23---内部类之局部内部类只能访问final的局部变量
局部内部类是定义在方法体或代码块中的类,在笔记19中已有过简单介绍. 今天要讨论的是局部内部类为什么只能访问为常量的局部变量. 作者: 博客园--蝉蝉 请尊重作者劳动成果,转载请在标题注明“转载”字样 ...
- Java基础进阶:内部类lambda重点摘要,详细讲解成员内部类,局部内部类,匿名内部类,Lambda表达式,Lambda表达式和匿名内部类的区别,附重难点,代码实现源码,课堂笔记,课后扩展及答案
内部类lambda重点摘要 内部类特点: 内部类可以直接访问外部类,包括私有 外部类访问内部类必须创建对象 创建内部对象格式: 外部类.内部类 对象名=new外部类().new内部类(); 静态内部类 ...
随机推荐
- (转)C# 正则表达式
最近写爬虫时需要用到正则表达式,有段时间没有使用正则表达式现在渐渐感觉有些淡忘,现在使用还需要去查询一些资料.为了避免以后这样的情况,在此记录下正则表达式的一些基本使用方法附带小的实例.让以后在使用时 ...
- SASS的安装和转换为CSS的方法
http://www.cnblogs.com/52css/archive/2012/08/19/sass-how-to-install-and-use.html SASS的安装方法: 1.先安装Rub ...
- 利用js对象的特性,去掉数组中的重复项
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...
- DotNetCore跨平台~autofac属性的自动注入
回到目录 在使用autofac这个DI工具时,我们一般使用的是构造方法注入,而dotnetcore的标准框架里也集成了构造方法注入,而属性注入在一些场景下,表现的更为灵活,像java的spring框架 ...
- 13 Timer和TimerTask 示例
定时器是一个应用十分广泛的线程工具,可用于调度多个定时任务以后台线程的方式执行.在Java中,可以通过Timer和TimerTask类来实现定义调度的功能 1 Timerjava.lang.Objec ...
- gulp教程之gulp中文API
1.gulp.src(globs[, options]) 1.1.说明:src方法是指定需要处理的源文件的路径,gulp借鉴了Unix操作系统的管道(pipe)思想,前一级的输出,直接变成后一级的输入 ...
- java调用ruby代码
问题: 最近在做一个应用的时候碰到了一个问题.客户端需要调用服务器端传回的脚本信息,然后执行.其中脚本类型包括ruby.而java中调用ruby的代码大致如下: String jrubyCode=&q ...
- Tomcat源码分析——Session管理分析(上)
前言 对于广大java开发者而已,对于J2EE规范中的Session应该并不陌生,我们可以使用Session管理用户的会话信息,最常见的就是拿Session用来存放用户登录.身份.权限及状态等信息.对 ...
- i.mx6 Android5.1.1 servicemanager本地服务
接在之前的 i.mx6 Android5.1.1 初始化流程之init进程 i.mx6 Android5.1.1 初始化流程之init.rc解析 servicemanager是由init创建的本地服务 ...
- js格式化文件大小,单位:Bytes、KB、MB、GB
原文出自:https://blog.csdn.net/seesun2012 // 格式化文件大小 function renderSize(value){ if(null==value||value== ...