java笔记--匿名内部类和静态内部类的理解和使用
匿名内部类
--如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3889467.html "谢谢--
1.由于局部内部类并不可见,因此不如使用匿名内部类替代。
只有当需要定义或重写类的构造方法,或者需要多个类的对象时,才建议使用局部内部类。
2.由于构造方法必须与类名相同,而匿名内部类没有类名,因此不能为其定义构造方法。
如果程序代码非常简单,则使用匿名内部类会使结构比价清晰。反之则不推荐使用匿名内部类。
3.匿名内部类常用于Swing中的组件的监控:
如:
ActionListenner listener = new ActionListenner(){
public void actionPerformed(ActionEvent e){}
};
静态内部类
静态内部类是使用static修饰的内部类,在静态内部类中,可以使用外部类定义的静态域,
但是不能使用非静态域,这是静态内部类与非静态内部类最大的区别
如:
public void fuction(){
public static class ObjectB{}
}
注意:ObjectB类不能声明成private的,否则不能使用其中定义的方法。
静态内部类的使用:
在内部类不需要访问外部类的对象时,可以将其设置成静态内部类。
可以像静态域和方法那样使用类名来引用静态内部类。
例如:
利用静态内部类来求一个数组的最大值和最小值:
package com.xhj.OOP.innerclass;
/**
* 静态内部类的使用
*
* @author XIEHEJUN
*
*/
public class InnerStaticClass {
public static class ResultInner {
private double max;
private double min;
public ResultInner(double max, double min) {
this.max = max;
this.min = min;
System.out.println("max = "+max+"\tmin = "+min);
}
public double getMax() {
return max;
}
public double getMin() {
return min;
}
}
/**
* 遍历数组,求出数组最大值和最小值
*
* @param array
* @return
*/
public static ResultInner getResult(double[] array) {
double max = Double.MIN_VALUE;
double min = Double.MAX_VALUE;
for (double d : array) {
if (d > max) {
max = d;
}
if (d < min) {
min = d;
}
}
return new ResultInner(max, min);
}
public static void main(String[] args) {
double[] array = new double[5];
System.out.println("源数组为:");
for (int i = 0; i < 5; i++) {
array[i] = 10* Math.random();
System.out.println(i+" "+array[i]);
}
System.out.println("遍历排序和后结果为:");
getResult(array);
}
}
java笔记--匿名内部类和静态内部类的理解和使用的更多相关文章
- java笔记--局部内部类认识与理解
java内部类 内部类应用最多的场景是在编写GUI程序时,将大量的事件监听处理放在了内部类中进行 --如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XH ...
- java笔记--对信号量Semaphore的理解与运用
java Semaphore 信号量的使用: 在java中,提供了信号量Semaphore的支持. Semaphore类是一个计数信号量,必须由获取它的线程释放, 通常用于限制可以访问某些资源(物理或 ...
- java笔记--关于多线程状态的理解和应用
关于多线程的状态 --如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3890266.html "谢谢-- 线程共有6种状态:1 ...
- Java四种引用--《深入理解Java虚拟机》学习笔记及个人理解(四)
Java四种引用--<深入理解Java虚拟机>学习笔记及个人理解(四) 书上P65. StrongReference(强引用) 类似Object obj = new Object() 这类 ...
- java笔记整理
Java 笔记整理 包含内容 Unix Java 基础, 数据库(Oracle jdbc Hibernate pl/sql), web, JSP, Struts, Ajax Spring, E ...
- java笔记1
第五天学习笔记 1.面对对象的理解并举例? 面对对象的核心:找合适的对象做合适的事情. 面对对象编程的思想:尽可能的用计算机语言来描述现实生活中的事物. 面对对象:侧重于对象 2.类与对象之间的关系? ...
- JAVA静态和非静态内部类
JAVA静态和非静态内部类 一直对java的静态和非静态内部类的东东理解不清楚,今天测试了一下,下面把测试结果记录一下,加深印象.用于以后查找. 直接上代码. package com.test.xml ...
- Java进阶(七)正确理解Thread Local的原理与适用场景
原创文章,始自发作者个人博客,转载请务必将下面这段话置于文章开头处(保留超链接). 本文转发自技术世界,原文链接 http://www.jasongj.com/java/threadlocal/ Th ...
- 转 Java笔记:Java内存模型
Java笔记:Java内存模型 2014.04.09 | Comments 1. 基本概念 <深入理解Java内存模型>详细讲解了java的内存模型,这里对其中的一些基本概念做个简单的笔记 ...
随机推荐
- C#原生压缩和解压缩方法
string path = AppDomain.CurrentDomain.BaseDirectory; string startPath = @"c:\Client"; stri ...
- Install NDK in Eclipse/Android Studio
1. Download NDK https://developer.android.com/tools/sdk/ndk/index.html 2.Install NDK $ tar xvf andro ...
- python-Event事件线程同步和互斥
#!/usr/bin/python #coding=utf-8 #用于线程间通信,通过事件标识控制 import threading from time import sleep,ctime def ...
- JavaScript设计模式-13.组合模式
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- linux centos 7.5 安装mysql5.7
1 下载tar包,这里使用wget从官网下载(注:下载地址随时可能有变动,wget命令默认下载目录为当前所在文件夹) wget https://dev.mysql.com/get/Downloads/ ...
- 关于rails中 rake db:create 失败的问题
提示信息: rake aborted!Could not find a JavaScript runtime. See https://github.com/sstephenson/execjsfor ...
- 浅谈javascript函数,变量声明及作用域
javascript函数跟变量的声明.作用域这些概念网上都已经讲烂了. 这里写个博客,也相当于做个笔记. 变量声明 首先看个例子: var globalVar = "gv"; fu ...
- 基础语言知识JAVA
1. 总结: JAVA比较重要的博客: http://www.runoob.com/java/java-tutorial.html (JAVA教程) http://blog.csdn.net/ ...
- Fork开源项目之通讯框架
项目发布于:https://github.com/HouZhiHouJue/IOCPMSG.看代码前请先看简介.
- 关于vue.js父子组件数据传递
vue.js中使用props down,events up的原则进行父子组件间的通信,先来记录下props down,看个例子: <div id="app2"> < ...