这里没有讲解理论是怎么样的,我用实例说明,个人觉得比理论更来得实际,并写下了测试的总结。
如需要补充理论的请参看这篇文章:关于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编程中,反射是一个非常强大的工具,它允许程序在运行时检查类、接口、字段和方法的信息,并且能够创建和操作对象。本文将详细介绍如何使用...
### Java连接池实例知识点解析 #### 一、Java连接池概念 在Java应用程序中,数据库连接是宝贵的资源。每一个数据库连接都需要消耗系统资源,并且频繁地创建和销毁连接会导致性能下降。因此,为了提高应用程序的效率...
本文详细介绍了 Java 中内部类的各种类型及其使用场景,包括静态内部类、非静态内部类、局部内部类以及匿名内部类。每种类型的内部类都有其独特的特性和应用场景,理解这些差异对于更高效地利用 Java 语言特性至关...
Java知识体系总结 Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现已被Oracle公司收购)于1995年推出。它以其“一次编写,到处运行”的特性闻名,适用于开发跨平台的应用程序,包括桌面应用、企业...
本文将详细介绍如何利用反射机制访问和实例化一个私有的内部类,并通过代码示例进行说明。 #### 二、反射概述 反射是Java语言提供的一种能够在运行时分析类和对象的能力。它允许程序获取类、接口、方法和字段的信息...
总结,Java反射机制提供了对运行时类信息的强大访问能力,虽然存在潜在的风险,但在许多场景下,如框架开发、动态代理、元编程等,它的优势是无可替代的。学习和熟练掌握Java反射,能够显著提升编程的灵活性和解决...
- **类与对象**:类是对象的模板,对象是类的具体实例。 - **封装**:将数据和操作数据的方法封装在一起,隐藏内部实现细节。 - **继承**:子类可以继承父类的属性和方法,实现代码复用。 - **多态**:允许子类...
### Java反射机制简介 ...然而,由于反射涉及到类的内部结构,因此在使用时需要谨慎,确保不会因为错误的操作导致安全问题或性能下降。此外,反射通常比直接调用方法慢,因此在性能敏感的应用程序中应避免过度使用。
总结来说,这个项目是关于Java内部类的实践,通过具体的代码示例展示了内部类如何工作,如何访问外部类的成员,以及在实际编程中的一些常见应用。了解和掌握内部类的使用能够帮助开发者更好地理解和利用Java的面向...
类的实例化生成对象,对象之间的交互构成了程序的运行。 为了更具体地理解Java OOP 的应用,文章介绍了如何设计和实现一个图书信息管理系统。这个系统是一个基于控制台的应用程序,它提供了基本的图书信息管理功能...
3. 封装是面向对象的三大特性之一,它通过将数据(属性)和操作数据的方法(方法)打包在类中,隐藏内部实现细节,对外提供接口来实现信息隐藏和安全。 三、继承 4. 继承允许一个类(子类)继承另一个类(父类)的...
`Class`对象是每个类的实例,代表了Java运行时的类信息。 **2. 获取`Class`对象** - `Class.forName(String className)`:根据类名获取`Class`对象。 - 对象的`getClass()`方法:获取对象所属类的`Class`对象。 - ...
Java中的反射机制是Java语言一个强大的特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java编程中,反射扮演着重要角色,尤其在动态加载类、创建对象、调用方法以及访问私有成员等...
### Java基础知识总结 #### Java概述 - **何为编程**:编程是指通过编写代码来告诉计算机执行特定任务的过程。这包括定义数据结构、算法逻辑、输入输出操作等。 - **什么是Java**:Java是一种广泛使用的高级编程...
总结一下,Java WebService与Tomcat结合使用,可以创建和部署跨平台的Web服务。具体步骤包括:编写服务端接口,使用JAX-WS或Apache CXF生成服务,部署到Tomcat服务器,最后编写客户端代码进行测试。在实际开发过程中...
- 静态内部类(Static Nested Class)不持有对外部类的引用,可以在没有外部类对象的情况下实例化。而普通内部类(Inner Class)在创建时隐含地持有一个对外部类的引用。 - 静态内部类可以声明 static 成员,而...