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内部类(); 静态内部类 ...
随机推荐
- Windows Git Bash命令行下创建git仓库并更新到github
大二的时候就听过老师说有一个叫git的版本管理工具,当时只是听老师说说而已,也没有去使用它,因为当时用过svn,就感觉自己没多少东西需要git管理. 最近几天,我经常在开源中国看别人的帖子,看到别人对 ...
- Mac版sublime text右键open in browser 不能识别中文名解决办法
问题描述: Mac下sublime text下打开中文命名的html文件,右键open in browser,浏览器无反应. 解决思路: 要么适应软件,要么改进软件来适应. 1. 将中文名的html ...
- 【开源组件】FastDFS极速入门与安装
FastDFS是一个开源的轻量级的分布式文件系统,为互联网量身定制,充分考虑了冗余备份.负载均衡.线性扩容等机制,并注重高可用.高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供 ...
- 使用vue的v-model自定义 checkbox组件
<template id='c'> <input type="checkbox" :checked="checked" v-on:change ...
- [转]从客户端中检测到有潜在危险的Request.Form值的详细解决
本文转自:http://www.knowsky.com/887593.html asp.net1.1后引入了对提交表单自动检查是否存在XSS(跨站脚本攻击)的能力.当用户试图用之类的输入影响页面返回结 ...
- 第5章 scrapy爬取知名问答网站
第五章感觉是第四章的练习项目,无非就是多了一个模拟登录. 不分小节记录了,直接上知识点,可能比较乱. 1.常见的httpcode: 2.怎么找post参数? 先找到登录的页面,打开firebug,输入 ...
- Spring 学习(四)--- AOP
问题 : AOP 解决的问题是什么 Spring AOP 的底层实现是什么 Spring AOP 和 AspectJ 的区别是什么 概述 在软件业,AOP为Aspect Oriented Progra ...
- php 在函数前面加个@的作用
@是错误控制运算符,用屏蔽错误提示比如:@mysql_connect() 不会出现Warning, 而原来mysql_connect 会在页面上访提示Warning.主要是高版本的php不在支持mys ...
- html全局属性(收藏)
HTML 属性赋予元素意义和语境. 下面的全局属性可用于任何 HTML 元素. 参考链接:http://www.w3school.com.cn/tags/html_ref_standardattrib ...
- layui使用 ——父,子页面传值
页面传值是非常常用的,layui自带弹窗功能,但是内置使用的是location.href 暂时没找到方法条件请求头,所以在后台需要放开拦截器, layer.open({ type : 2, title ...