文档章节

Java的内部类

西红柿的眼泪
 西红柿的眼泪
发布于 2016/07/09 14:33
字数 696
阅读 51
收藏 0

类是java中定义的一个独立的程序单元,在某种情况下也可以把一个类放在另外一个类的内部定义,这定义在内部的类就叫内部类或嵌套类。

1.内部类提供了更好的封装,把一个内部类隐藏在外部类之内。内部类成员可以直接访问外部类的私有数据。内部类成员可以直接访问外部类的私有数据,匿名内部类是适合用于创建那些仅需要使用一次的类。内部类和外部类的区别,内部类可以比外部类多使用三个修饰符private、protected、static;非静态内部类不能拥有静态成员

2.一般内部类都被作为内部类定义,和类中的成员变量、方法、构造器、初始化块的类成员相似的类成员,局部内部类和匿名内部类则不是类成员。成员内部类可以分为两种:静态内部类和非静态内部类。外部类只能有两个作用域一个是同一个包内和任意位置,而内部类可以使同一个包内,同一个类内,父子类和任何位置。内部类编译完后也是一个.class文件,但依托于父类。

3.用static修饰的静态内部类,静态内部类不属于外部类的对象而是属于外部类的本身。静态内部类是外部类的一个静态成员,因此外部类的所有方法、所有初始化块可以使用静态内部类来定义变量、创建对象。但外部类依然不能直接访问静态内部类的成员。

4.内部类的使用,在外部类里使用内部类和不同的类一样,定义变量创建实例和作为父类被继承;在外部类以外使用非静态内类(不能用private修饰);在外部类以外使用静态内部类。

5.局部内部类是定义方法内部的一个类,对于局部成员而言,不管是局部变量还局部内部类,他们的上一级程序单元是方法而不是类,使用static修饰他们没有任何意义。

6.匿名内部类,创建匿名内部类是会立即创建一个类的实例,这个类定义立即消失,匿名内部类不能重复使用。匿名内部类的格式如下:new 实现接口()| 父类构造器(实参列表){  匿名内部类的类体方法 };匿名内部类不能是抽象的类、匿名内部类不能定义构造器。

© 著作权归作者所有

共有 人打赏支持
西红柿的眼泪
粉丝 4
博文 48
码字总数 39713
作品 0
郑州
程序员
【目录导航】JAVA零基础进阶之路

【JAVA零基础入门系列】(已完结)导航目录 Day1 开发环境搭建 Day2 Java集成开发环境IDEA Day3 Java基本数据类型 Day4 变量与常量 Day5 Java中的运算符 Day6 Java字符串 Day7 Java输入与输出...

MFrank
06/21
0
0
Java中的内部类实例初始化匿名函数(JLS7 8.6:Instance Initializers)

偶尔发现了一段好玩的java代码,关于Java内部类的,觉得很有意思,但是想不明白这段代码是java语法的特性哪?还是别的什么。最后发现还是对java了解的不够深啊。先上代码: import java.util...

qalong
2013/09/02
0
0
关于Scala的路徑依赖类型(Path-dependent type)

咋看这个术语,有点吓倒。其实不是什么新东西,也是讲关于内部类和外部类的事,不过两者有点区别。在Scala中,内部类和外部类的一些行为特性和Java差不多。 请看如下的Scala代码: class Out...

mj4738
2011/11/25
0
0
关于Java内部类字段和方法不能使用static修饰的原因

昨天的文章中,遗留了一个问题就是,为什么Java内部类字段和方法不能使用static修饰。 先下下面一段代码: 上面的内部类的成员变量和方法,只要加上了static修饰,就会出现编译错误。 原因:...

九劫散仙
06/02
0
0
new和反射产生java内部类的实例化详解

前两天看到一道口试题,是关于内部类的知识,觉得很有意思。 这道题是这样的: 根据注释填写(1),(2),(3)处的代码 public class Test{ ?????? public static void main(String[] args){ ??...

zaizai_loong
2013/09/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JS三元运算示例

1. topFlag=topFlag ==0?1:0; 等于 if(topFlag=00){ topFlag=1; }else if(topFlag == 1){ topFlag=0; } 2. 5>3?alert('5大'):alert('3大'); 即 if(5>3){alert('5大')}else{alert('3大')}; 注......

森火
今天
0
0
利用Slf4j的MDC跟踪方法调用链

why? 一个web项目通常提供很多URL访问地址, 项目一般都是分层处理,例如Controller——>Service——>DAO。 如果想根据日志查看用户一次请求都走了哪些方法(多数是查错误)。 如果系统是多人...

杨春炼
今天
10
0
Maven介绍及安装

Maven介绍及安装 以下内容是本人早期学习时的笔记,可能比较详实繁琐,现在复习一下Maven,顺便将内容抛出来,供大家一起学习进步。 一、Maven简介 Maven是Apache旗下的一款项目管理工具,是...

星汉
今天
0
0
小程序Aes解密

主要步骤: 1、下载AES源码(JS版) 2、在小程序中新建一个公共的文件夹,把AES源码拷贝进去(注意:需要暴露接口 module.exports = CryptoJS;) 3、添加一个用于加密解密的公共JS,可取名为...

Mr_Tea伯奕
今天
0
0
Go实现文件传输(基本传输可用)

发送端 package mainimport ("fmt""os""net""io")func SendFile(path string, connect net.Conn){file, oerr :=os.Open(path)if oerr !=nil{fmt.Println("Open", oerr)......

CHONGCHEN
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部