- 浏览: 314326 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (254)
- java (178)
- tomcat (6)
- 邮件 (1)
- smtp (1)
- Linux (2)
- 编码 (2)
- 导入工程 (1)
- Specification Level (1)
- hibernate (10)
- 字段类型 (1)
- 字段类型匹配 (1)
- 数据库 (3)
- sql (9)
- struts2 (8)
- 类型转换 (2)
- java,MyEclipse,SVN (1)
- Myecplise (4)
- 输入校验 (1)
- JFrame (2)
- Oracle (8)
- google (1)
- Swing (3)
- Fusioncharts (1)
- 找工作 (0)
- js (4)
- jsp (11)
- displaytag (1)
- spring (8)
- 工作 (1)
- String (1)
- 算法 (2)
- IO (1)
- xml (3)
- 设计模式 (1)
- UML (1)
- 文档 (1)
- ajax (1)
- 日常 (7)
- sql server (1)
- mysql (3)
- git (1)
- Maven (1)
- mongodb (1)
- postman (1)
最新评论
内部类:
将相关的类组织在一起,降低了命名空间的混乱,它是定义在小于一个包的范围内。
内部类可以定义在另外一个类里面,可以定义在一个方法里面,甚至可以作为一个表达式的一部分。
Java里面共有四种内部类:
1、静态内部类(static inner class): 只能访问外部类的静态成员变量与静态方法,生成静态内部类对象的方式为: OuterClass.InnerClass inner = new OuterClass.InnerClass();
它是定义在一个类的里面,而且这个类是由一个static关键字修饰的。
2、成员内部类(member inner class): 可以访问外部类的静态与非静态的方法与成员变量。生成成员内部类对象的方式为: OuterClass.InnerClass inner = new OuterClass().new InnerClass();
它是定义在一个类的里面,但是没有static关键字修饰。
在一个外部类当中创建一个内部类的实例(例如在外部类里面定义的一个方法里面创建成员内部类的实例):this.new Innerclass();
在一个外部类的外面创建一个内部类的实例(例如在不是外部类的另一个类里面创建成员内部类的实例):(new Outerclass()).new Innerclass();
若想在局部成员内部类中访问外部类的成员变量,语法为:OuterClass.this.a;
3、局部内部类(Local inner class): 定义在方法当中,只能访问方法中声明的final类型的变量。像一个局部变量一样,不能被声明为一个public、protected、private、static的。【用的很少】
4、匿名内部类(Anonymous Inner Class):匿名内部类会隐式地继承一个父类或实现一
个接口。它是一个没有名字的局部内部类,也没有关键字class,也没有关键字extends和implements,也没有构造方法。【用的比较多】
下面是各种内部类相关的一些实例:
将相关的类组织在一起,降低了命名空间的混乱,它是定义在小于一个包的范围内。
内部类可以定义在另外一个类里面,可以定义在一个方法里面,甚至可以作为一个表达式的一部分。
Java里面共有四种内部类:
1、静态内部类(static inner class): 只能访问外部类的静态成员变量与静态方法,生成静态内部类对象的方式为: OuterClass.InnerClass inner = new OuterClass.InnerClass();
它是定义在一个类的里面,而且这个类是由一个static关键字修饰的。
2、成员内部类(member inner class): 可以访问外部类的静态与非静态的方法与成员变量。生成成员内部类对象的方式为: OuterClass.InnerClass inner = new OuterClass().new InnerClass();
它是定义在一个类的里面,但是没有static关键字修饰。
在一个外部类当中创建一个内部类的实例(例如在外部类里面定义的一个方法里面创建成员内部类的实例):this.new Innerclass();
在一个外部类的外面创建一个内部类的实例(例如在不是外部类的另一个类里面创建成员内部类的实例):(new Outerclass()).new Innerclass();
若想在局部成员内部类中访问外部类的成员变量,语法为:OuterClass.this.a;
3、局部内部类(Local inner class): 定义在方法当中,只能访问方法中声明的final类型的变量。像一个局部变量一样,不能被声明为一个public、protected、private、static的。【用的很少】
4、匿名内部类(Anonymous Inner Class):匿名内部类会隐式地继承一个父类或实现一
个接口。它是一个没有名字的局部内部类,也没有关键字class,也没有关键字extends和implements,也没有构造方法。【用的比较多】
下面是各种内部类相关的一些实例:
package com.shengshiyuan.innerclass; class StaticInner { private static int a = 4; /** * 静态内部类,必须有static关键字修饰(static关键字不能修饰外部类,它也不可能去修饰外部类。static要想修饰类,只能修饰静态内部类) * 类: Inner <br> * 描述: TODO <br> * 作者: * 时间: Nov 6, 2013 7:38:41 PM */ public static class Inner { public void test() { System.out.println(a); } } } public class StaticInnerclassTest { public static void main(String[] args) { // 生成内部类的对象只能从外部类一层层深入去引用它去生成对象,不能直接写内部类 StaticInner.Inner inner = new StaticInner.Inner(); inner.test(); } }
package com.shengshiyuan.innerclass; class MemberInner { private int a = 4; /** * 成员内部类 * 类: Inner2 <br> * 描述: TODO <br> * 作者: * 时间: Nov 6, 2013 7:57:02 PM */ public class Inner2 { private int a = 5; public void doSomething() { // 就近原则,访问类内部的变量 System.out.println(a); // 这种情况下访问外部类的成员变量的方式 System.out.println(MemberInner.this.a); } } public void method() { // 在这里创建成员内部类实例的方式 Inner2 inner2 = this.new Inner2(); } } public class MemberInnerclassTest { public static void main(String[] args) { // 注意成员内部类生成对象的方式 MemberInner.Inner2 inner2 = new MemberInner().new Inner2(); inner2.doSomething(); } }
package com.shengshiyuan.innerclass; import java.util.Date; public class AnonymousInnerclassTest { @SuppressWarnings("deprecation") public String get(Date date) { return date.toLocaleString(); } public static void main(String[] args) { AnonymousInnerclassTest test = new AnonymousInnerclassTest(); // String str = test.get(new Date()); // System.out.println(str); /** * 匿名内部类 * 1、这里表示我自己定义了一个匿名的内部类 * 2、我自己定义的这个匿名的内部类它继承了Date这个类 * 3、它继承完之后重写了Date类里面的toLocalString()方法 * 4、注意:这里调用get方法的时候传递的不是一个Date类型的实例,而是传递的是这里定义的这个内部类(Date类的一个子类)的一个实例 */ String str = test.get(new Date() { public String toLocaleString() { return "hello world"; } }); System.out.println(str); } }
发表评论
-
领域精通涉及技术点(不分先后)
2017-12-20 19:35 563Java8 netty jvm kafaka消息队列 上传下载 ... -
计算机各种单位讲解及换算
2017-12-13 13:54 1546我还听过有UK的 一、最小单位:位(bit,缩写为b) 在原 ... -
JAVA字符串格式化-String.format()和MessageFormat的使用
2017-12-05 10:39 1281String.format()常规类型的格式化 Stri ... -
eclipse启动项目常见问题
2017-11-16 17:46 1140今儿遇到了个问题,ecli ... -
字符编码笔记:ASCII,Unicode和UTF-8
2017-10-23 16:37 422讲的太牛逼了: http://ww ... -
emoji简单讲解
2017-10-23 15:17 916emoji处理方式大起底 http://blog.csdn.n ... -
BigDecimal讲解
2017-10-12 15:58 401BigDecimal 由任意精度的整数非标度值 和 32 位的 ... -
eclips 控制台console上不打印信息
2017-09-06 21:53 5371、进windows菜单 -> show view -& ... -
详解RequestMappingHandlerMapping和RequestMappingHandlerAdapter
2017-08-29 17:08 2913http://donald-draper.iteye.com/ ... -
用@ExceptionHandler 来进行切面异常处理
2017-08-29 11:47 2226有时候我们想处理某个类里Controller中抛出的异常怎么搞 ... -
Spring 注解@Component、@Repository、@Service、@Controller区别
2017-08-28 15:27 964spring 2.5 中除了提供 @Com ... -
线程的一点小总结
2017-08-23 20:36 660java中main方法启动的是一个进程还是一个线程? 答:是一 ... -
线程池
2017-08-23 17:35 476诸如Web 服务器、数据库 ... -
Class源码大概讲解
2017-08-23 16:47 476http://blog.csdn.net/a327369238 ... -
Spring 事务相关
2017-08-14 12:10 437Transactionz注解的readOnly ... -
把时间当做朋友-前言
2017-08-13 20:47 365要管理的不是时间,而是自己。人们生活在同一个世界,却又各自 ... -
单例里面的方法讲解
2017-08-11 14:55 457spring里的controller是单例的。系统针对每个co ... -
eclipse拷贝出来的项目名称还是原来的
2017-07-26 16:46 1031需要修改的有如下几个地方: 1、pom.xml里面打包的名字一 ... -
自定义hibernate方言,新增自定义函数
2017-06-27 10:47 843按位与运算(&)在许多数据库中都是支持的,遗憾的是,H ... -
http请求参数:header body paramter三种参数区别、联系
2017-06-19 10:46 477412345
相关推荐
Java内部类总结 学习java的资源
JAVA内部类的一些总结
java内部类总结,内部类的共同特征,内部类的分类等
最全面的java内部类总结,概念和实例帮助深入理解!
Java内部类总结.pdf
java内部类总结.pdf
Java内部类总结[参考].pdf
定义在一个类内部的类叫内部类,包含内部类的类称为外部类。内部类可以声明public、protected、private等访问限制,可以声明为abstract的供其他内部类或外部类继承与扩展,或者声明为static、final的,也可以实现...
关于JAVA内部类总结讲解,个人网上整理收藏,觉得不错滴
java中的匿名内部类总结
详细全面的了解java内部类的工作原理!
Java内部类语法总结.pdf
内部类总结,超详细!希望能够帮助到有需要的同学,免积分下载!
170331-01.匿名内部类总结.java 170331-01.匿名内部类总结.java 匿名 内部类 总结 java