`
trophy
  • 浏览: 176570 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

java 内部类

    博客分类:
  • java
 
阅读更多


转自:

http://www.cnblogs.com/silence250627170/archive/2011/11/29/thinkinginjava.html

自己收藏,感谢原作者!

----------------------------------------------------------------------------------------------------


简单的说,内部类就是将一个类的定义放到另一个类的定义内部。

内部类分为:成员内部类、局部内部类、静态内部类、匿名内部类。

a,成员内部类 
作为外部类的一个成员存在,与外部类的属性、方法并列。 
优点: 
1、内部类作为外部类的成员,可以访问外部类的私有成员或属性。(即使声明为private,但是对于处于其内部的内部类还是可见的。) 
2、可以内部类定义在外部类不可访问的属性。这样就在外部类中实现了比外部类private还要小的额访问权限。 

注意: 
1、内部类是一个编译时的概念,一旦编译成功,就会成为完全不同的两个类。 
对于一个名为Outer的外部类和其内部定义的名为Inner的内部类。编译完成后出现Outer.class 和 Outer$Inner.class 两个类 
2、当Outer是一个private类时,外部类对于其外部访问是私有的,所以就无法建立外部类对象,进而也无法建立内部类对象。

b,局部内部类 
在方法中定义的内部类称为局部内部类。 
与局部变量类似,在局部内部类前不加修饰符public和private,其范围为定义它的代码块 
注意: 
1、在类外不可直接生产局部内部类(保证局部内部类对外是不可见的)。 
2、要想使用局部内部类时需要生产对象,对象调用方法,在方法中才能调用局部内部类。 
3、通过内部类和接口达到一个强制的弱耦合,用局部内部类来实现接口,并在方法中返回接口类型,使局部内部类不可见,屏蔽实现类的可见性

4、内部类只可引用外部类的final局部变量

c,静态内部类 

静态内部类可以使用public,protected,private修饰 
静态内部类中可以定义静态和非静态的成员 
注意: 
一个静态内部类不需要一个外部类的成员:只是静态内部类和成员内部类的区别。静态内部类的对象可以直接生成 
这实际上静态内部类成为了一个顶级类。 
静态内部类不可用private来进行定义。 
当类与接口(或者是接口与接口)发生方法命名冲突的时候,此时必须使用内部类来实现。用接口不能完全地实现多继承,用接口配合内部类才能实现真正的多继承。

d,匿名内部类 


匿名内部类就是没有名字的内部类。 
注意: 
1、匿名内部类不能有构造函数 
2、匿名内部类不能定义任何静态成员、方法和类 
3、匿名内部类不能是public、protected、private、static 
4、只能创建匿名内部类的一个实例 
5、一个匿名内部类用其隐含实现一个接口或实现一个类。 
6、因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效


一般的内部类(即非静态的的内部类)的作用可以概括为:代码隐藏+元素访问权;内部类可以访问外围类的所有成员变量和方法,注意是所有,不管是不是private的


非静态的内部类只能声明非静态成员或方法,可以使用外围类的静态成员或变量;

而静态内部类则可拥有静态的成员和方法。,但静态内部类中只能引用其外部类的静态成员或变量。

分享到:
评论

相关推荐

    浅谈Java内部类的四个应用场景

    Java内部类是Java言语的一个很重要的概念,《Java编程思想》花了很大的篇幅来讲述这个概念。但是我们在实践中很少用到它,虽然我们在很多时候会被动的使用到它,但它仍然像一个幕后英雄一样,不为我们所知,不为我们...

    java内部类详解

    java内部类详解

    Java内部类总结

    Java内部类总结 学习java的资源

    Java内部类应用详解

    从Java1.1开始引入了内部类以来,它就引起了人们的激烈争论。其实任何优秀的语言特性用得不好就是滥用,内部类用得不好就会导致代码像迷宫一样,导致出现毫无重用的综合征。...本文档讲述Java内部类的规则及应用

    12.java内部类.zip

    12.java内部类.zip12.java内部类.zip12.java内部类.zip12.java内部类.zip12.java内部类.zip12.java内部类.zip12.java内部类.zip12.java内部类.zip12.java内部类.zip12.java内部类.zip12.java内部类.zip12.java内部类...

    java内部类的讲解

    这里是自己对java内部类整理的一篇文章,有可执行的源代码

    java内部类使用例子

    java内部类使用例子,可以运行

    Java内部类的四个应用场景

    谈Java内部类的四个应用场景

    java 内部类应用

    java 内部类应用java 内部类应用java 内部类应用java 内部类应用java 内部类应用java 内部类应用java 内部类应用java 内部类应用java 内部类应用java 内部类应用

    Java 内部类

    Java 的使用 分别介绍了 成员内部类、方法内部类、静态内部类

    Java内部类(DOC)

    Java内部类Java内部类Java内部类Java内部类Java内部类Java内部类Java内部类

    java 内部类 局部内部类 匿名类 实例代码

    java 内部类 实例内部类 局部内部类 匿名类 静态内部类 实例代码

    JAVA 内部类 PPT

    详细介绍JAVA内部类的用法,用途,基本语法,及匿名类用法

    Java内部类的作用

    Java内部类的作用

    JAVA内部类总结

    JAVA内部类的一些总结

    JAVA内部类.doc

    对内部类不错的讲解,以及如何应用并且还帮你归了类,不错的选择

    java内部类

    高效的课件,详细的内容介绍,针对性的代码展示,提高性的练习题目。适合新手或者基础薄弱人员学习,一个PPT解决你编程中常见的错误,最重要的是一人下载多人使用,不受限制,没有隐藏密码

    Java 干货之深入理解Java内部类(学习资料)

    Java 干货之深入理解Java内部类;Java 干货之深入理解Java内部类;Java 干货之深入理解Java内部类;Java 干货之深入理解Java内部类;Java 干货之深入理解Java内部类;

    java基础java内部类

    java基础java内部类

Global site tag (gtag.js) - Google Analytics