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的内存模型,这里对其中的一些基本概念做个简单的笔记 ...
随机推荐
- (转载)IDEA新建项目时,没有Spring Initializr选项
最近开始使用IDEA作为开发工具,然后也是打算开始学习使用spring boot. 看着博客来进行操作上手spring boot,很多都是说 创建一个新项目(Create New Project) 选 ...
- 第1章—Spring之旅—Spring模块介绍
Spring模块介绍 Spring7大核心模块: 核心容器(Spring Core) 核心容器提供Spring框架的基本功能.Spring以bean的方式组织和管理Java应用中的各个组件及其关系.S ...
- 21.Decorator修饰器
1.类的修饰 2.方法的修饰 3.为什么修饰器不能用于函数? 4.core-decorators.js 5.使用修饰器实现自动发布事件 6.Mixin 7.Trait 8.Babel转码器的支持
- python-组播
#!/usr/bin/python #coding=utf-8 #发送端 import sys,struct,socket from time import sleep message="h ...
- memcached 学习笔记 3
适合什么场合 memcached不是万能的,它也不是适用在所有场合. Memcached是“分布式”的内存对象缓存系统,那么就是说,那些不需要“分布”的,不需要共享的,或者干脆规模小到只有一台服务器的 ...
- XRP共识算法
目录 共识协议属性 账本历史 信任的验证 共识协议属性 XRP Ledger使用的共识协议不同于之前的任何区块链.该协议称为XRP Ledger共识协议,旨在具有以下重要属性: 使用XRP Ledge ...
- ubuntu 10.10 更新源
deb http://mirrors.163.com/ubuntu/ maverick main universe restricted multiverse deb-src http://mirro ...
- Android6.0内核移植(1):分析编译日志
在下面命令之后产生的编译日志进行分析 source build/envsetup.sh lunch sabresd_6dq-user make -j20 ======================= ...
- Cheatsheet: 2018 01.01 ~ 02.28
JAVA How to Improve the Performance of a Java Application Java Memory Management Writing Java Micros ...
- 4 springboot 集成swagger2
Swagger:实时生成在线接口文档,方便测试和沟通 官网地址:https://swagger.io/ 引入依赖 <dependency> <groupId>io.spring ...