- 浏览: 7852313 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (2425)
- 软件工程 (75)
- JAVA相关 (662)
- ajax/web相关 (351)
- 数据库相关/oracle (218)
- PHP (147)
- UNIX/LINUX/FREEBSD/solaris (118)
- 音乐探讨 (1)
- 闲话 (11)
- 网络安全等 (21)
- .NET (153)
- ROR和GOG (10)
- [网站分类]4.其他技术区 (181)
- 算法等 (7)
- [随笔分类]SOA (8)
- 收藏区 (71)
- 金融证券 (4)
- [网站分类]5.企业信息化 (3)
- c&c++学习 (1)
- 读书区 (11)
- 其它 (10)
- 收藏夹 (1)
- 设计模式 (1)
- FLEX (14)
- Android (98)
- 软件工程心理学系列 (4)
- HTML5 (6)
- C/C++ (0)
- 数据结构 (0)
- 书评 (3)
- python (17)
- NOSQL (10)
- MYSQL (85)
- java之各类测试 (18)
- nodejs (1)
- JAVA (1)
- neo4j (3)
- VUE (4)
- docker相关 (1)
最新评论
-
xiaobadi:
jacky~~~~~~~~~
推荐两个不错的mybatis GUI生成工具 -
masuweng:
(转)JAVA获得机器码的实现 -
albert0707:
有些扩展名为null
java 7中可以判断文件的contenttype了 -
albert0707:
非常感谢!!!!!!!!!
java 7中可以判断文件的contenttype了 -
zhangle:
https://zhuban.me竹板共享 - 高效便捷的文档 ...
一个不错的网络白板工具
https://mp.weixin.qq.com/s/hErv4X9Whl_Juq8-TDhzdg
什么我们需要使用内部类了?
内部类方法可以访问该类定义所在的作用域中的数据,包括私有的数据。
内部类可以对同一包中的其他类隐藏起来。
当想要定义一个回调函数且不想编写大量代码时,使用匿名内部类比较快捷。
内部类所实现得到功能使用外部类同样可以使用,只是在特定场景使用内部更加方便。比如:有时候一个类只需要在一处代码中使用一次,其他位置不会用到这个类,这时使用匿名内部类来解决,代码更加简洁。
01、成员内部类
成员内部类是最普通常见的内部类,它常定义于另外一个类的内部。如代码1所示。
1
public class Outter {
private String name = "Java敲黑板";
private static int age = 1;
//成员内部类的定义
class inner{
public void print(){
System.out.println("name: "
+ name + ",age:" + age);
}
}
public static void main(String[] args){
//编译错误
//inner in = new inner();
//编译错误
//inner in = new Outter.inner();
//成员内部的正确打开方式
Outter out = new Outter();
inner in = out.new inner();
in.print();
}
}
敲黑板
成员内部类可以无条件的访问外部内的所有成员(包括private、static等)
外部内如果要访问内部类的成员,必须先创建一个成员内部类的对象,再通过这个对象引用来访问。
02、局部内部类
局部内部类是定义在一个方法或者一个作用域里面的类。如代码2所示。
2
public void outPrint(){
//局部内部类定义在一个方法函数中
class inner{
public void print(){
System.out.println("name: "
+ name + ",age:" + age);
}
}
//定义了局部内部类的对象引用
inner in = new inner();
//利用对象引用访问方法
in.print();
}
敲黑板
局部内部类和成员内部类的区别在于,前者作用域仅局限于方法内。
局部内部类有一个优势,即对外部世界可以完全地隐藏起来。
局部内部类不能用public、protected、private以及static修饰符的。
03、匿名内部类
匿名内部类是只需要为内部类建立一个对象,且不用为该类指定一个类名。如代码3所示。匿名内部类可用于以下业务场景:
只用到类的一个实例;
类在定义后马上用到;
类非常小(比如类代码在10行以下)。
3
public class ListenerTest {
public interface MouseListener{
public void onMouseClick();
}
public static void main(String[] args){
//定义一个匿名内部类
MouseListener m = new MouseListener(){
@Override
public void onMouseClick() {
System.out.println("Mouse clicked!");
}
};
//调用方法
m.onMouseClick();
}
}
敲黑板
由于匿名内部类没有名称,因此在创建匿名内部类对象时,new运算符后是超类或接口的名称,其后面的{}内部为匿名类的定义。
匿名类对象的创建与匿名内部类的定义是在一起完成的。
04、静态内部类
静态内部类也是定义在另一个类里面的类,只不过在类的前面多了一个关键字static。如代码4所示。
4
public class Outter1 {
//定义静态内部类
static class innner{
public void print(){
System.out.println("Hello world!");
}
}
public static void main(String[] args) {
//编译错误
//inner in = new inner();
Outter1 out = new Outter1();
//编译错误
//inner in1 = new out.inner();
//静态内部类的正确打开方法
innner in2 = new Outter1.innner();
in2.print();
}
}
敲黑板
当内部类不需要访问外围类对象的时候,应该使用静态内部类。
静态内部类,只能访问外部类的静态成员。
什么我们需要使用内部类了?
内部类方法可以访问该类定义所在的作用域中的数据,包括私有的数据。
内部类可以对同一包中的其他类隐藏起来。
当想要定义一个回调函数且不想编写大量代码时,使用匿名内部类比较快捷。
内部类所实现得到功能使用外部类同样可以使用,只是在特定场景使用内部更加方便。比如:有时候一个类只需要在一处代码中使用一次,其他位置不会用到这个类,这时使用匿名内部类来解决,代码更加简洁。
01、成员内部类
成员内部类是最普通常见的内部类,它常定义于另外一个类的内部。如代码1所示。
1
public class Outter {
private String name = "Java敲黑板";
private static int age = 1;
//成员内部类的定义
class inner{
public void print(){
System.out.println("name: "
+ name + ",age:" + age);
}
}
public static void main(String[] args){
//编译错误
//inner in = new inner();
//编译错误
//inner in = new Outter.inner();
//成员内部的正确打开方式
Outter out = new Outter();
inner in = out.new inner();
in.print();
}
}
敲黑板
成员内部类可以无条件的访问外部内的所有成员(包括private、static等)
外部内如果要访问内部类的成员,必须先创建一个成员内部类的对象,再通过这个对象引用来访问。
02、局部内部类
局部内部类是定义在一个方法或者一个作用域里面的类。如代码2所示。
2
public void outPrint(){
//局部内部类定义在一个方法函数中
class inner{
public void print(){
System.out.println("name: "
+ name + ",age:" + age);
}
}
//定义了局部内部类的对象引用
inner in = new inner();
//利用对象引用访问方法
in.print();
}
敲黑板
局部内部类和成员内部类的区别在于,前者作用域仅局限于方法内。
局部内部类有一个优势,即对外部世界可以完全地隐藏起来。
局部内部类不能用public、protected、private以及static修饰符的。
03、匿名内部类
匿名内部类是只需要为内部类建立一个对象,且不用为该类指定一个类名。如代码3所示。匿名内部类可用于以下业务场景:
只用到类的一个实例;
类在定义后马上用到;
类非常小(比如类代码在10行以下)。
3
public class ListenerTest {
public interface MouseListener{
public void onMouseClick();
}
public static void main(String[] args){
//定义一个匿名内部类
MouseListener m = new MouseListener(){
@Override
public void onMouseClick() {
System.out.println("Mouse clicked!");
}
};
//调用方法
m.onMouseClick();
}
}
敲黑板
由于匿名内部类没有名称,因此在创建匿名内部类对象时,new运算符后是超类或接口的名称,其后面的{}内部为匿名类的定义。
匿名类对象的创建与匿名内部类的定义是在一起完成的。
04、静态内部类
静态内部类也是定义在另一个类里面的类,只不过在类的前面多了一个关键字static。如代码4所示。
4
public class Outter1 {
//定义静态内部类
static class innner{
public void print(){
System.out.println("Hello world!");
}
}
public static void main(String[] args) {
//编译错误
//inner in = new inner();
Outter1 out = new Outter1();
//编译错误
//inner in1 = new out.inner();
//静态内部类的正确打开方法
innner in2 = new Outter1.innner();
in2.print();
}
}
敲黑板
当内部类不需要访问外围类对象的时候,应该使用静态内部类。
静态内部类,只能访问外部类的静态成员。
发表评论
-
复习:强迫线程顺序执行方式
2019-01-03 23:42 1477方法1: 三个线程,t1,t2,t3,如果一定要按顺序执行, ... -
(转)不错的前后端处理异常的方法
2019-01-02 23:16 1966前言 在 Web 开发中, 我们经常会需要处理各种异常, 这是 ... -
info q的极客时间大咖说等资料下载
2018-08-15 08:40 3411info q的极客时间大咖说等资料下载,还有不少思维导图 链 ... -
CXF 客户端超时时间设置(非Spring配置方式)
2018-07-03 22:38 2184import org.apache.cxf.endpoint. ... -
(转)synchronized关键字画像:正确打开方式
2018-06-14 09:25 447https://mp.weixin.qq.com/s/b3Sx ... -
CountDownLatch的例子
2018-06-13 14:10 628public class StatsDemo { ... -
两道面试题,带你解析Java类加载机制
2018-06-12 16:29 552https://mp.weixin.qq.com/s/YTa0 ... -
Spring中获取request的几种方法,及其线程安全性分析
2018-06-11 09:03 622https://mp.weixin.qq.com/s/KeFJ ... -
JVM虚拟机小结1
2018-06-04 20:43 4621 jps -l //列出详细的类名和进程ID 2)jps ... -
windows下自带命令行工具查看CPU资源情况等
2018-06-04 12:53 3038微软提供了不少命令行 ... -
(收藏)深入分析Java的序列化与反序列化
2018-05-30 15:21 553https://mp.weixin.qq.com/s/T2Bn ... -
apache common包中的序列化工具
2018-05-30 09:10 1774什么是序列化 我们的 ... -
JAVA8 JVM的变化: 元空间(Metaspace)
2018-05-24 22:30 908本文将会分享至今为至我收集的关于永久代(Permanent G ... -
(转)服务器性能指标(一)——负载(Load)分析及问题排查
2018-05-21 21:03 1262原创: Hollis Hollis 负载 ... -
(转)对象复用
2018-05-20 15:27 805public class Student { priv ... -
mapreduce中入门中要注意的几点
2018-05-06 08:59 619在 mapreduce中,比如有如下的词: I love b ... -
HDFS的基本操作
2018-05-02 21:47 880-mkdir 在HDFS创建目录 ... -
一个不错的开源工具类,专门用来解析日志头部的,好用
2018-05-02 20:00 706一个不错的开源工具类,专门用来解析日志头部的,好用。 http ... -
介绍个不错的RESTFUL MOCK的工具wiremock
2018-04-27 21:02 1853介绍个不错的RESTFUL MOCK的工具wiremock,地 ... -
LINUX下EPOLL等不错的文章收藏
2018-04-25 09:35 5021 通俗讲解 异步,非阻塞和 IO 复用 https:/ ...
相关推荐
java内部类分为: 成员内部类、静态嵌套类、方法内部类、匿名内部类。这篇文章主要介绍了Java中的匿名内部类的相关资料,需要的朋友可以参考下
内部类是指在一个外部类的内部再定义一个类。下面通过本文给大家java内部类的使用小结,需要的朋友参考下吧
245 12.3.3 在外部类外访问静态内部类 246 12.4 匿名内部类 247 12.4.1 创建匿名内部类 247 12.4.2 匿名内部类的初始化 249 12.5 综合练习 250 12.6 小结 250 12.7 习题 250 第13章 多线程(精彩视频:55分钟) 252 ...
1.2 深入理解嵌套类和内部类 1.2.1 什么是嵌套类及内部类? 1.2.2 静态嵌套类 1.2.3 在外部类中定义内部类 1.2.4 在方法中定义内部类 1.2.5 匿名内部类 1.2.6 内部类使用的其它的问题 1.3 文件和流 1.3.1 什么是数据...
1.5 小结 11 第2章 基本数据类型——构建Java 大厦的基础 12 2.1 源代码注释 12 2.1.1 单行注释 12 2.1.2 区域注释 12 2.1.3 文档注释 13 2.2 基本数据类型 14 2.2.1 整型 15 2.2.2 浮点型 17 ...
1.2 深入理解嵌套类和内部类 47 1.2.1 什么是嵌套类及内部类? 47 1.2.2 静态嵌套类 48 1.2.3 在外部类中定义内部类 48 1.2.4 在方法中定义内部类 49 1.2.5 匿名内部类 49 1.2.6 内部类使用的其它的问题 50 1.3 文件...
6.3 小结:Java其实是个类和对象的世界 152 6.4 习题 153 第7章 Java中的方法——给汽车丰富多彩的功能 154 教学视频:2小时55分钟 7.1 方法:让汽车动开动 154 7.1.1 引出问题:开动汽车 154 7.1.2 那么,...
6.3 小结:Java其实是个类和对象的世界 152 6.4 习题 153 第7章 Java中的方法——给汽车丰富多彩的功能 154 教学视频:2小时55分钟 7.1 方法:让汽车动开动 154 7.1.1 引出问题:开动汽车 154 7.1.2 那么,...
自己购买的教材 零点起航Delphi7基础教程源码 Delphi7是Inprise公司推出的面向对象的可视化编程语言,它提供...第13章 网络编程技术 13.1 网络基础知识 13.2 TCP/IP编程 13.3 使用网络函数编程 13.4 小结 参考文献
10.11 编程练习 第11章 数组与ArrayList类 11.1 数组简介 11.2 数组的内部表示法 11.3 数组作为参数传递 11.4 使用数组制作表格 11.5 数组初始化 11.6 多维数组 11.7 图像处理 11.8 ArrayList类 11.9 小结 ...
1.8 小结 1.9 复习题 第2章 编程示例 2.1 “Hello world”程序 2.2 编程过程的观点 2.3 两数相加的程序 2.4 编程习语和模式 2.5 类和对象 2.6 图形程序 2.7 小结 2.8 复习题 2.9 编程练习 第3...
30.3 象棋游戏项目——规则的内部类 30.3.1 实现卒移动和吃的方法 30.3.2 实现炮、车移动和吃的方法 30.3.3 实现马移动和吃的方法 30.3.4 实现象移动和吃的方法 30.3.5 实现士移动和吃的方法 30.3.6 实现将移动和吃...
学生提问:既然内部类是外部类的成员,是否可以为外部类定义子类,在子类中再定义一个内部类来重写其父类中的内部类? 211 6.7.4 局部内部类 211 6.7.5 匿名内部类 212 6.7.6 闭包(Closure)和回调 215 6.8 ...
本书是为全英文版本。 ...第13章 借口和内部类 第14章 泛型和arraylist类 第15章 链式数据结构 第16章 稽核,映射和迭代器 第17章 初探swing 第18章 深入swing 第19章 java的发展永无止境
1.3 小结 第2课 对象与内存控制 2.1 实例变量和类变量 2.1.1 实例变量和类变量的属性 2.1.2 实例变量的初始化时机 2.1.3 类变量的初始化时机 2.2 父类构造器 2.2.1 隐式调用和显式调用 2.2.2 访问子类对象...
在做过一系列小程序之后,对小程序的登陆鉴权的流程也有一定的理解,类似于 B 端小程序自不必说,要...之前在上海经常使用,价格和优惠都非常不错,这类小程序属于线下功能类小程序,内部有抽奖,付款等一系列功能。
1.7 小结 第2章 数据、变量和计算 2.1 C++程序结构 2.1.1 程序注释 2.1.2 #include指令——头文件 2.1.3 命名空间和using声明 2.1.4 main()函数 2.1.5 程序语句 2.1.6 空白 2.1.7 语句块 2.1.8 自动生成的控制台程序...