`

Java内部类实例测试及总结

阅读更多
这里没有讲解理论是怎么样的,我用实例说明,个人觉得比理论更来得实际,并写下了测试的总结。

如需要补充理论的请参看这篇文章:关于JAVA匿名内部类,回调,事件模式的一点讨论

/**

 * 内部类测试

 * @author http://blog.csdn.net/fenglibing

 * 总结:

 * 1、可以通过外部类的方法调用成员内部类、静态内部类

 * 2、内部成员类可以调用内部静态类,但内部静态不能够调用内总成员类

 * 3、内部成员类可以调用外部类的静态方法与非静态方法

 * 4、静态内部类不能够调用外部类的非静态方法、变量

 * 5、外部类的静态方法里可以调用内总成员类,不过调用方法不是"T1 t1=new T1();",而是:

 *    T1 t1=new InnerTest().new T1();

 * 6、外部类的静态方法可以直接调用内部静态类

 * 7、内部静态类与外部类的静态方法与间是畅通无阻,内部成员类与外部类所有方法与变量都可以交互(除
 *    外部静态方法不能够直接调用内部成员类)
 */
public class InnerTest {
    static int a;
    InnerTest()
    {
       new T1();//在外部类的构造函数里,调用内部成类
       new T2();
    }
    /**
     * 内部成员类
     */
    private class T1{
       T2 t2=new T2();//建立一个内部类,内部类调用内部类
       T1()
       {
           a++;//内部成员类可以直接调用外总类的静态变量
           //内部成员类可以调用外部类的静态方法与非静态方法
           System.out.println(addLong(1,2));
           System.out.println(add(1,2));
       }
    }
    /**
     * 内部静态类
     */
    static class T2{
       //内部静态类不能够直接调用内部成员类
       //T1 t1=new T1();
       T2()
       {
           System.out.println(add(1,2));
           //静态内部类不能够调用外部类的非静态方法、变量
           //addLong(1,2);
       }
    }
    /*************外部类方法*************/
    long addLong(long a,long b)
    {
       return a+b;
    }
    public static int add(int a,int b)
    {        
       return a+b;
    }
    void callT2()
    {
       new T2();//通过外部类的方法调用内部类
    }
    public static void main(String[] args) {
       // TODO Auto-generated method stub
       InnerTest it=new InnerTest();
       it.callT2();
       //静态方法里面调用内部成员类,不过调用方法不是"T1 t1=new T1();",而是如下:
       T1 t1=new InnerTest().new T1();
       //静态方法里面调用内部静态类
       T2 t2=new T2();
    }
    /*************外部类方法*************/
}
分享到:
评论

相关推荐

    java 面试题 总结

    而通常的内部类需要在外部类实例化后才能实例化。 22、JSP中动态INCLUDE与静态INCLUDE的区别? 动态INCLUDE用jsp:include动作实现 它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。 静态...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    11.2.5 总结:类的修饰符 297 11.3 方法的修饰符 297 11.3.1 方法的访问控制符 298 11.3.2 public:没有限制的修饰符 299 11.3.3 protected:仅对子类和同包的类可见 300 11.3.4 默认控制符:仅在本包中可见 ...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    11.2.5 总结:类的修饰符 297 11.3 方法的修饰符 297 11.3.1 方法的访问控制符 298 11.3.2 public:没有限制的修饰符 299 11.3.3 protected:仅对子类和同包的类可见 300 11.3.4 默认控制符:仅在本包中可见 ...

    JAVA基础课程讲义

    测试类的定义方式 57 简单的学生类编写示例 58 内存分析 59 属性(field,或者叫成员变量) 59 引用类型 60 类的方法 60 对象的创建和使用 60 构造器(或者叫做构造方法,constructor) 60 垃圾回收机制(Garbage ...

    Thinking in java4(中文高清版)-java的'圣经'

    非静态实例初始化 5.8 数组初始化 5.8.1 可变参数列表 5.9 枚举类型 5.10 总结 第6章 访问权限控制 第7章 复用类 第8章 多态 第9章 接口 第10章 内部类 第11章 持有对象 第12章 通过异常处理错误 第13章 字符串 第...

    Java 2平台安全技术-结构,API设计和实现

    6.7 内部类 111 6.8 本机方法 111 6.9 签署对象 111 6.10 密封对象 113 6.11 监护对象 114 第7章 编程密码学 117 7.1 设计原则 117 7.2 密码服务和服务提供器 118 7.3 密码类 121 7.3.1 java.security.Security 121 ...

    JAVA 2平台安全技术-结构,API设计和实现

    6.7 内部类 111 6.8 本机方法 111 6.9 签署对象 111 6.10 密封对象 113 6.11 监护对象 114 第7章 编程密码学 117 7.1 设计原则 117 7.2 密码服务和服务提供器 118 7.3 密码类 121 7.3.1 java.security.Security 121 ...

    整理后java开发全套达内学习笔记(含练习)

    nested [java] 嵌套的 ['nestid] '如:内部类(nested classes) Object [java] 对象 ['ɒbdʒekt] Overload [java] 方法的重载(不同参数列表的同名方法) [,әuvә'lәud] Override [java] 方法的覆盖(覆盖父类的...

    代码生成器Mgicode生成器JAVA代码生成器

    由《Ext JS源码分析与开发实例宝典》作者:彭仁夔团队开发而成 90%以上代码可以生成验证、生成三层代码、生成完善的权限系统、生成数据库等功能 功能之强大用了就知道! 两年前,我负责指导Java方向实训,在最后...

    swing界面设计之JTree

    //内部类 TreeWillExpandListenerImp.java 114 (十九) 向 Java 应用程序伸出援助之手——用 JavaHelp 2.0 构建下一个 Java 应用程序的帮助系统 115 入门 116 使用 HelpSet 117 HelpSet 数据文件 118 helpset 文件 ...

    编程思想下篇

    第10章 内部类 第11章 持有对象 第12章 通过异常处理错误 第13章 字符串 第14章 类型信息 第15章 泛型 第16章 数组 第17章 容器深入研究 第18章 Java I/O系统 第19章 枚举类型 第20章 注解 第21章 并发 第22章 图形...

    Spring.3.x企业应用开发实战(完整版).part2

    17.2.2 Web目录结构及类包结构规划 17.2.3 单元测试类包结构规划 17.2.4 系统的结构图 17.2.5 PO的类设计 17.2.6 持久层设计 17.2.7 服务层设计 17.2.8 Web层设计 17.2.9 数据库设计 17.3 开发前的准备 17.4 持久层...

    Spring3.x企业应用开发实战(完整版) part1

    17.2.2 Web目录结构及类包结构规划 17.2.3 单元测试类包结构规划 17.2.4 系统的结构图 17.2.5 PO的类设计 17.2.6 持久层设计 17.2.7 服务层设计 17.2.8 Web层设计 17.2.9 数据库设计 17.3 开发前的准备 17.4 持久层...

    课程设计报告---基于JAVA的视频会议系统设计与实现.doc

    15 5.2.2 客户端套接字建立 15 5.2.3 视音频发送 16 5.2.4 视音频接收 17 第六章 性能测试与分析 18 6.1 测试实例(测试集)的研究与选择 18 6.2 性能分析 18 第七章 课程设计总结 19 7.1 系统总结 19 7.1.1 系统...

    深入理解Android:卷I--详细书签版

    5.3 Thread类及常用同步类分析 109 5.3.1 一个变量引发的思考 109 5.3.2 常用同步类 114 5.4 Looper和Handler类分析 121 5.4.1 Looper类分析 122 5.4.2 Handler分析 124 5.4.3 Looper和Handler的同步关系 127...

    Java学习笔记-个人整理的

    {3.8}内部类}{77}{section.3.8} {4}Collection}{80}{chapter.4} {4.1}\ttfamily java.util.ArrayList}{80}{section.4.1} {4.2}\ttfamily java.util.LinkedList}{81}{section.4.2} {4.3}贪吃蛇案例}{82}{section...

    基于html汽车商城网站页面设计与实现.rar(毕业设计+毕业源码+答辩PPT)

    1.8.3 内部测试与后续优化 X 1.8.4 CSS元素 XI 1.9 网站结构布局及设计 XII 1.9.1 网站首页结构 XII 1.9.2 主题鲜明,富有特色 XIV 1.9.3 商品版式编排布局合理性 XIV 1.9.4 登录页排布局合理性 XV 1.9.5 注册页排...

    软件工程完整ppt

     1022类与实例  1023对象属性与操作  1024对象类的关联  103聚集、 组合、 继承和多态  1031聚集与组合  1032抽象与继承  1033多态  104习题  第11章对象设计模式  111对象设计模式概念  1111历史背景  ...

    Android开发案例驱动教程 配套代码

    4.3.3 匿名内部类事件处理模型 51 4.4 Activity中的常用事件 53 4.4.1 触摸事件 53 4.4.2 键盘事件 55 4.5 菜单 57 4.5.1 文本菜单 57 4.5.2 图片文本菜单 59 本章小结 60 第5章 UI基础控件 61 5.1 按钮 61...

    Ext Js权威指南(.zip.001

    4.4 深入了解类的创建及管理 / 135 4.4.1 开始创建类 / 135 4.4.2 创建类的类:ext.class / 137 4.4.3 所有继承类的基类:ext.base / 151 4.4.4 实现动态加载:ext.loader / 151 4.4.5 管理类的类:ext.class...

Global site tag (gtag.js) - Google Analytics