`

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 内部类应用

    总结,Java内部类是一种强大的工具,能够帮助我们更好地组织代码、实现复杂的逻辑和接口。但使用时也需谨慎,避免过度依赖内部类导致代码难以理解和维护。在实际项目中,应根据具体需求选择合适的设计模式。

    java 利用反射获取内部类静态成员变量的值操作.docx

    ### Java 利用反射获取内部类静态成员变量的值操作 #### 一、引言 在Java编程中,反射是一个非常强大的工具,它允许程序在运行时检查类、接口、字段和方法的信息,并且能够创建和操作对象。本文将详细介绍如何使用...

    java连接池实例.doc

    ### Java连接池实例知识点解析 #### 一、Java连接池概念 在Java应用程序中,数据库连接是宝贵的资源。每一个数据库连接都需要消耗系统资源,并且频繁地创建和销毁连接会导致性能下降。因此,为了提高应用程序的效率...

    内部类的相关知识-静态内部类,匿名内部类……

    本文详细介绍了 Java 中内部类的各种类型及其使用场景,包括静态内部类、非静态内部类、局部内部类以及匿名内部类。每种类型的内部类都有其独特的特性和应用场景,理解这些差异对于更高效地利用 Java 语言特性至关...

    java知识体系总结

    Java知识体系总结 Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现已被Oracle公司收购)于1995年推出。它以其“一次编写,到处运行”的特性闻名,适用于开发跨平台的应用程序,包括桌面应用、企业...

    反射私有内部类的例子

    本文将详细介绍如何利用反射机制访问和实例化一个私有的内部类,并通过代码示例进行说明。 #### 二、反射概述 反射是Java语言提供的一种能够在运行时分析类和对象的能力。它允许程序获取类、接口、方法和字段的信息...

    Java反射经典实例

    总结,Java反射机制提供了对运行时类信息的强大访问能力,虽然存在潜在的风险,但在许多场景下,如框架开发、动态代理、元编程等,它的优势是无可替代的。学习和熟练掌握Java反射,能够显著提升编程的灵活性和解决...

    Java基础最全知识点总结

    - **类与对象**:类是对象的模板,对象是类的具体实例。 - **封装**:将数据和操作数据的方法封装在一起,隐藏内部实现细节。 - **继承**:子类可以继承父类的属性和方法,实现代码复用。 - **多态**:允许子类...

    Java反射简单小实例

    ### Java反射机制简介 ...然而,由于反射涉及到类的内部结构,因此在使用时需要谨慎,确保不会因为错误的操作导致安全问题或性能下降。此外,反射通常比直接调用方法慢,因此在性能敏感的应用程序中应避免过度使用。

    java代码-20210510 测试内部类1

    总结来说,这个项目是关于Java内部类的实践,通过具体的代码示例展示了内部类如何工作,如何访问外部类的成员,以及在实际编程中的一些常见应用。了解和掌握内部类的使用能够帮助开发者更好地理解和利用Java的面向...

    JavaOOP内部测试机试题2.doc

    类的实例化生成对象,对象之间的交互构成了程序的运行。 为了更具体地理解Java OOP 的应用,文章介绍了如何设计和实现一个图书信息管理系统。这个系统是一个基于控制台的应用程序,它提供了基本的图书信息管理功能...

    java面向对象编程测试题

    3. 封装是面向对象的三大特性之一,它通过将数据(属性)和操作数据的方法(方法)打包在类中,隐藏内部实现细节,对外提供接口来实现信息隐藏和安全。 三、继承 4. 继承允许一个类(子类)继承另一个类(父类)的...

    最全面的java反射总结

    `Class`对象是每个类的实例,代表了Java运行时的类信息。 **2. 获取`Class`对象** - `Class.forName(String className)`:根据类名获取`Class`对象。 - 对象的`getClass()`方法:获取对象所属类的`Class`对象。 - ...

    java中反射知识总结

    Java中的反射机制是Java语言一个强大的特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java编程中,反射扮演着重要角色,尤其在动态加载类、创建对象、调用方法以及访问私有成员等...

    java面试八股文java基础知识总结.pdf

    ### Java基础知识总结 #### Java概述 - **何为编程**:编程是指通过编写代码来告诉计算机执行特定任务的过程。这包括定义数据结构、算法逻辑、输入输出操作等。 - **什么是Java**:Java是一种广泛使用的高级编程...

    java+webService+tomcat+实例

    总结一下,Java WebService与Tomcat结合使用,可以创建和部署跨平台的Web服务。具体步骤包括:编写服务端接口,使用JAX-WS或Apache CXF生成服务,部署到Tomcat服务器,最后编写客户端代码进行测试。在实际开发过程中...

    java知识总结------关键知识点总结

    - 静态内部类(Static Nested Class)不持有对外部类的引用,可以在没有外部类对象的情况下实例化。而普通内部类(Inner Class)在创建时隐含地持有一个对外部类的引用。 - 静态内部类可以声明 static 成员,而...

Global site tag (gtag.js) - Google Analytics