`
douglozy
  • 浏览: 2125 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论
阅读更多
嵌套类
1.在Java中如下形式一个类里面包含的类称之为嵌套类
例子:
class OuterClass {
    ...
    class NestedClass {
        ...
    }
}

2.嵌套类分为2类:
             1.静态嵌套类
             2.非静态嵌套类(又称为内部类)
嵌套类是它的封装类的成员变量。非静态嵌套类(内部类)可以访问它封装类的其他所有成员变量(包括private的);静态嵌套类不能访问它封装类的其他成员变量。就像类OuterClass中的成员变量一样,嵌套类可以声明为 private 、 protected、public 或 package private的。

例子:
class OuterClass {
    ...
    static class StaticNestedClass {
        ...
    }
    class InnerClass {
        ...
    }
}


为什么使用嵌套类?
1.逻辑分组;2.增加封装;3.更高的可读性和可维护性。

静态嵌套类
静态嵌套类和它的封装类的静态方法一样,不能直接访问封装类中的实例变量和方法-只能通过对象引用。
访问:
          OuterClass.StaticNestedClass
          OuterClass.StaticNestedClass nestedObject =
     new OuterClass.StaticNestedClass();

非静态嵌套类(内部类)
内部类可以直接访问其封装类的成员变量和方法;因为内部类是和其封装类的对象关联的,所以不能定义static的属性和方法
内部类的实例对象和其封装类的实例对象关联的:所以在初始化内部类之前必须先初始化其封装类;
OuterClass.InnerClass innerObject = outerObject.new InnerClass();
另外:内部类分为 local内部类和匿名内部类。(下章再详细讨论)



源:http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html



分享到:
评论

相关推荐

    Java 深入理解嵌套类和内部类

    Java 嵌套类和内部类详解 Java 中的嵌套类和内部类是指在一个类的内部定义另一个类,这种类称为嵌套类(nested classes)。嵌套类有两种类型:静态嵌套类和非静态嵌套类。静态嵌套类使用很少,非静态嵌套类也即被称...

    从Java嵌套类中访问外部类成员.doc

    在给定的文档中,讨论的是如何从Java嵌套类中访问外部类的成员以及一些相关的概念。 首先,嵌套类分为两种主要类型:静态嵌套类(也称为内部静态类)和非静态嵌套类(也称为实例内部类)。非静态嵌套类可以访问外部...

    深入理解Java嵌套类和内部类

    深入理解Java嵌套类和内部类 Java 嵌套类(nested classes)是指在一个类的内部定义另一个类,这种类有两种类型:静态嵌套类和非静态嵌套类。非静态嵌套类也称为内部类(inner classes)。在Java中,嵌套类从JDK1.1...

    java嵌套类

    在Java语言中,嵌套类(Nested Classes)是Java语言规范中定义的术语,指的是在其他类或接口的主体内部声明的类。嵌套类可以细分为多种类型,每种类型都有其特点和使用场景。 首先,根据嵌套类定义的位置,可以将...

    java-嵌套类(inner class)-来自oracle官网

    ### Java嵌套类详解 #### 一、嵌套类(Nested Class)概述 嵌套类是一种在Java中非常有用的特性,允许开发者在一个类或者接口的内部定义另一个类。这种结构可以增强代码的组织性和封装性。 ##### 1.1 嵌套类的...

    java嵌套接口程序

    java 嵌套接口 程序 学习java必须要学习的经典案例,加油学习把

    java 嵌套类的详解及实例代码

    Java中的嵌套类是一种强大的特性,它允许在一个类的内部定义另一个类。这种设计模式提供了更高的封装性和灵活性,尤其在处理复杂的数据结构和算法时。本文将深入探讨嵌套类的详解及其实例代码。 首先,我们要区分两...

    Java嵌套类和内部类详解

    Java中的嵌套类和内部类是面向对象编程中一种特殊的类定义方式,允许在一个类的定义内部创建另一个类。这种特性使得代码结构更加紧凑,同时也提供了更高级别的封装和抽象。在Java中,嵌套类分为静态嵌套类和非静态...

    19.java嵌套的try…catch语句.zip

    19.java嵌套的try…catch语句.zip19.java嵌套的try…catch语句.zip19.java嵌套的try…catch语句.zip19.java嵌套的try…catch语句.zip19.java嵌套的try…catch语句.zip19.java嵌套的try…catch语句.zip19.java嵌套的...

    json转对象(java 多级嵌套)

    例如,如果`InnerObject`还包含另一个嵌套的JSON对象,只需在Java类中添加相应的字段并定义相应的getter和setter即可。`ObjectMapper`会根据JSON结构解析并填充Java对象。 5. **反向操作:Java对象转JSON** 除了将...

    java和kotlin的内部类静态嵌套类

    Java和Kotlin是两种在移动开发领域广泛应用的编程语言,尤其在Android开发中占据主导地位。内部类和静态嵌套类是...在提供的资源中,"java内部类嵌套类"和"kotlin内部类嵌套类"的示例代码将帮助你进一步巩固这些概念。

    java实现多层嵌套循环参数转换

    例如,如果有一个表示组织结构的类,其中包含子组织的列表,我们可以使用递归或嵌套循环来遍历整个结构: ```java public void traverseOrganization(Organization org) { // 处理当前组织 processOrganization...

    Java精华版 chm Java API、嵌套类和内部类、与时间有关的类Date,DateFormat,Calendar、文件与流、Java变量类型间的相互转换、Java与Web、用连接池提高Servlet访问数据库的效率、Java扩展、应用服务器的集群策略及Java EE 5.0、Java IO 包中的Decorator模式等

    本Java精华内容深入Java API、嵌套类和内部类、与时间有关的类Date,DateFormat,Calendar、文件与流、Java变量类型间的相互转换、Java与Web、用连接池提高Servlet访问数据库的效率、Java扩展、应用服务器的集群策略及...

    java for语句嵌套练习,打印各种星型

    这是一个关于Java的for语句嵌套练习,可以打印出各种星型,供大家学习,很有意思哦~~

    java静态内部类(嵌套类)

    ### Java静态内部类(嵌套类)详解 #### 一、静态内部类概念与特性 在Java编程语言中,静态内部类(也被称为嵌套类)是一种特殊的内部类形式,它通过`static`关键字来定义。与普通内部类相比,静态内部类具有以下...

    java try…catch嵌套捕获异常的实例

    总结来说,`try-catch`嵌套在Java中用于更精细化的异常处理,允许我们针对不同类型的异常执行不同的恢复策略。通过这种方式,我们可以编写更健壮、更易维护的代码,确保程序在面对错误时能够优雅地处理并继续运行。

    多层集合嵌套的JSON数据转化为Java对象(src.zip)

    当JSON数据包含嵌套的对象时,我们需要创建对应的Java类来存储数据。例如,对于上面的JSON,我们可以创建两个类:`MainObject`和`SubObject`。 ```java public class MainObject { private String key1; ...

    java开发中嵌套类的详解及实例

    Java开发中嵌套类的详解及实例 嵌套类是Java语言中的一种特殊的类,定义在另一个类或接口内部。嵌套类可以分为三种类型:成员嵌套类、局部嵌套类和匿名嵌套类。 1. 成员嵌套类(Member Nested Class) 成员嵌套类...

    详解Java 中的嵌套类与内部类

    详解Java中的嵌套类与内部类 Java中的嵌套类与内部类是 Java编程语言中的一种重要概念,它们在Java程序设计中扮演着重要角色。下面我们将详细介绍Java中的嵌套类与内部类。 嵌套类(Nested Class)可以在一个类...

    java freemark list嵌套导出word

    在Java应用中,使用FreeMarker导出Word文档时,经常会遇到列表(list)的嵌套问题,这涉及到数据模型构建、模板设计以及Word文档的格式化。下面我们将详细探讨这个主题。 1. **FreeMarker简介** FreeMarker是一个...

Global site tag (gtag.js) - Google Analytics