`

内部类简介

    博客分类:
  • J2SE
阅读更多
内部类是Java语言中的一种特殊的语法,简单的来说,就是在一个类的内部再声明一个类,这些声明在类内部的类就被称作内部类。在实际声明时,内部类可以声明在类的内部、类的方法内部,也可以声明在类的构造方法内部,内部类声明的语法格式和一般类的声明一样,只是内部类声明时可以使用static修饰符进行修饰。

         对于内部类的相关使用,本部分不做深入的介绍,只是进行简单的说明,辅助建立内部类的概念,能够进行一些基本的使用。

         下面是一个简单的内部类的示例代码:

                   /**

* 内部类基本使用示例代码

*/

public class OutClass {

         int i = 0;

         

         public class InnerClass{

                   public void test(){

                            i++;

                   }

         }

}

         在该示例代码中,类InnerClass声明在了类OutClass的内部,所以InnerClass被称为内部类,而OutClass则被称为InnerClass的外部类。

         该代码编译以后,将生成两个class文件,一个是OutClass.class,另外一个是OutClass$InnerClass.class。这里需要说明的是,内部类也被编译成一个独立的类文件,类文件的名称为:外部类类名$内部类类名.class。

         在内部类中,可以很方便的访问外部类的属性i,而外部类不能直接引用内部类中的属性和方法,语法中提供了一套专门的格式来访问内部类中的属性和方法,这些语法这里就不作介绍了。

         内部类是Java语言诞生以后新增的一个语法,设计该语法的初衷主要有两个:

         1、隐藏内部类的实现

也就是将只有被外部类使用的功能隐藏在内部类的内部,其它类访问这个内部类时的语法会比较复杂,从而在一定程度了避免了其它类对于内部类的访问。

         2、内部类可以访问外部类的所有属性和方法,避免了参数传递

                   在内部类中,可以访问外部类中的所有属性和方法,private访问控制符修饰的属性和方法也可以被内部类访问,这样将方便内部类的编写,避免了参数传递,也减少了外部类需要向其它类开放的属性和方法的数量。

         当然,内部类除了带来一系列的好处以外,还带来了一系列的不足,主要的不足有如下几点:

         1、增加了语法的复杂度

                   在一个类的内部声明一个类,使Java语言的复杂度增加了很多,也在一定程度上损害了Java语言的编程风格,同时使阅读代码的难度大幅度的增加。

         2、使整个项目的结构变得复杂

内部类通过增加每个类的复杂度,使得项目的结构变得更加复杂,而且没有原来的结构那么清晰。

         当前内部类的语法在以下编程技术中的应用比较多:

         1、图形用户界面编程中的事件处理

         2、Java语言API中部分功能类的实现

         综合以上说明,在实际的开发过程中,如果不是十分必要,不建议编写内部类,对于内部类实现的功能可以使用类和类之间的调用进行实现,这样可以保留Java语言清晰的编程风格。

         最后需要特别说明的是:在Java语法中,一个源代码内部可以编写多个类,例如:

                   /**

* 一个类内部声明多个类

*/

public class TwoClassInOneFile {

         int n = 0;

         public void method(){}

}

 

class AnotherClass {

         char c;

         public void t(){}

}

         这样的源代码,在编译时,将生成两个独立的class的文件:TwoClassInOneFile.class和AnotherClass.class,这样的结构不是内部类。

         在实际项目中,不推荐进行这样的编码,主要原因是不方便类源代码的查找,而推荐每个源文件内部只声明一个类的形式。



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Mailbomb/archive/2009/01/06/3719194.aspx

关于内部类的详解,参见:http://www.iteye.com/topic/442435
分享到:
评论

相关推荐

    java接口与内部类教学PPT

    1.接口-简介 2....内部类-简介 8.内部类-作用 9.内部类-特殊语法规则 10.内部类-安全性 11.内部类-局部内部类 12.内部类-匿名内部类 13.内部类-静态内部类 14.综述

    javaSE代码实例

    17.3.3 ReadWriteLock接口与ReentrantReadWriteLock类简介 390 17.3.4 ReentrantReadWriteLock读/写锁的具体使用 391 17.4 信号量的使用 393 17.4.1 Semaphore类简介 393 17.4.2 Semaphore类的具体使用 ...

    跟汤老师学Java(第12季):枚举、泛型、内部类

    本课程从零开始,以通俗易懂的方式讲解Java技术,手把手教你掌握每一个知识点。...8.内部类简介 9.成员内部类、局部内部类、静态内部类、匿名内部类 教学全程采用笔记+代码案例的形式讲解,通俗易懂!!!

    java中的内部类内部接口详解

    文章目录简介内部类静态内部类非静态内部类静态方法内部类非静态方法的内部类匿名类内部接口总结 简介 一般来说,我们创建类和接口的时候都是一个类一个文件,一个接口一个文件,但有时候为了方便或者某些特殊的原因...

    完整版 Java初级教程 Java语言程序设计 第6章 内部类和异常类(共22页).ppt

    完整版 Java初级教程 Java语言程序设计 第6章 内部类和异常类(共22页).ppt 完整版 Java初级教程 Java语言程序设计 第7章 Java中的常用类(共14页).ppt 完整版 Java初级教程 Java语言程序设计 第8章 集合框架(共...

    企业内部办公系统 1.0.rar

    本源码是一个企业内部办公系统,OA办公系统,有后台管理、登陆验证、权限管理,欢迎下载!菜单功能:前台页面1、显示员工列表2、登陆3、显示公告信息列表管理员管理1、系统桌面:传送文件;记事本;注销用户2、部门...

    内部审计程序的编制基础简介.docx

    内部审计程序的编制基础简介.docx

    台山核电内部审计体系及模型简介.pptx

    台山核电内部审计体系及模型简介.pptx

    LCM工作原理,了解内部组成.

    LCM工作原理简介,液晶工作原理,LCM分类,生产工艺,内部组成,供大家学习.

    (超赞)JAVA精华之--深入JAVA API

    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 什么是数据...

    JAVA SE学习精华集锦

    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 文件...

    tomcat的简介—IBM-ETP内部的培训教材

    IBM-ETP的培训教材,内容讲的还是教易懂的。先做一个初步的理解用吧。 具体的东西自己看看,其实这类东西百度最好

    完整版 Java初级教程 Java语言程序设计 第7章 Java中的常用类(共14页).ppt

    完整版 Java初级教程 Java语言程序设计 第6章 内部类和异常类(共22页).ppt 完整版 Java初级教程 Java语言程序设计 第7章 Java中的常用类(共14页).ppt 完整版 Java初级教程 Java语言程序设计 第8章 集合框架(共...

    JAVA SE 开发手册.CHM

    12、JAVA面向对象之内部类、匿名内部类 13、JAVA集合框架之简介 14、JAVA集合框架之list接口、LinkedList类、ArrayList类、Vector类 15、JAVA集合框架之Set接口、HashSet类、TreeSet类 16、JAVA集合框架之Map...

    完整版 Java初级教程 Java语言程序设计 第4章 类和对象(共22页).ppt

    完整版 Java初级教程 Java语言程序设计 第6章 内部类和异常类(共22页).ppt 完整版 Java初级教程 Java语言程序设计 第7章 Java中的常用类(共14页).ppt 完整版 Java初级教程 Java语言程序设计 第8章 集合框架(共...

    软件测试技术JUnit和单元测试入门简介

    回归测试——软件或环境的修复或更正后的“再测试”,自动测试工具对这类测试尤其有用 软件测试技术JUnit和单元测试入门简介 软件测试 1、几个相关的概念 白盒测试——把测试对象看作一个打开的盒子,程序内部的...

    最简单的23种设计模式简介

    1、工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。  2、...

    Delphi的原子世界简介

    一些较高级的面向对象语言才可支持对类信息的动态访问和调用,但往往需要一套复杂的内部解释机制和较多的系统资源。而DELPHI的Object Pascal语言吸收了一些高级面向对象语言的优秀特征,又保留可将程序直接编译成...

    基于深度学习的Block RAM核的功能简介和应用说明

    基于深度学习的Block RAM核的功能简介和应用说明,具体章节内容安排如下:Xilinx FPGA内部的存储资源和典型应用;BlockRAM硬核的内部结构和接口信号进行详细说明;ROM核的生成和使用,以及对应的COE文件的解释;RAM核...

    21天学通Java-由浅入深

    232 11.7 习题 232 第12章 内部类(精彩视频:71分钟) 234 12.1 非静态内部类 234 12.1.1 创建非静态内部类 234 12.1.2 在外部类中访问内部类 235 12.1.3 在外部类外访问内部类 236 12.1.4 在内部类中访问外部类 ...

Global site tag (gtag.js) - Google Analytics