0 0

Java中普通内部类为何不能有static数据和static字段,也不能包含嵌套类5

看Thinking in Java的内部类章节时,对这样一句话不理解:
“普通内部类的字段与方法,只能放在类的外部层次上,所以普通的内部类不能有static数据和static字段,也不能包含嵌套类。但是嵌套类可以包含所有这些东西。”
后来我又看了下英文版的原文:
Fields and methods in ordinary inner classes can only be at the outer level of a class, so ordinary inner classes cannot have static data, static fields, or nested classes. However, nested classes can have all of these.
按字面意思看翻译的差不多,希望明白人给解释一下。

问题补充:虽然知道普通内部类不能有static的字段与方法,但是具体原因不是很清楚,Thinking in Java的解释也没看懂,希望明白人给解释一下。
2013年7月23日 16:47

2个答案 按时间排序 按投票排序

0 0

内部类的创建 依赖于外部类  比如 new a.b  外部类都没有创建怎么创建内部类呢

2013年7月24日 17:46
0 0

静态的东西需要在编译时分配内存,而非静态内部类是在实例化的时候才分配内存。所以现在的情况就是有了东西没地方放,不知道我这么说恰不恰当

2013年7月24日 10:03

相关推荐

    Java中的内部类应用举例

    ### Java中的内部类应用举例 #### 一、Java内部类概览 ...总之,Java内部类和枚举类型都是Java语言中重要的特性,它们各自在封装、模块化以及状态管理等方面提供了强大的支持,是高级Java程序设计不可或缺的部分。

    Java内部类(DOC)

    ### Java内部类(DOC)详解 #### 一、概述 Java内部类是Java语言中一个...综上所述,Java内部类提供了灵活的对象组织方式和代码封装机制,特别是静态成员类和成员类各有特点,在实际开发中可以根据具体需求选择使用。

    JAVA_内部类_反射机制

    匿名内部类的定义通常紧跟在`new`关键字之后,且不能包含构造方法,也不能有静态成员或方法。它们同样遵循局部内部类的规则,只能在一个作用域内创建一个实例。 反射机制是Java提供的一种强大的工具,它允许程序在...

    java内部类学习资料

    Java内部类是Java编程语言中的一个特色特性,它允许在一个类的定义内部定义另一个类。这种设计模式在处理一些特定的复杂情况时非常有用,比如实现事件监听、封装临时对象或者创建私有辅助类等。以下是对Java内部类的...

    内部类 匿名内部类 内部接口 对比说明

    2. **局部内部类**:定义在方法内部的类,具有局部变量的特性,不能有静态属性和方法,也不能在类外直接访问。它可以访问外部类的所有成员以及所在方法的final变量。局部内部类主要用于方法内部的特定逻辑,对外不...

    JAVA内部类

    与成员变量类似,成员内部类可以拥有自己的字段、方法和构造器,但它不能包含任何静态成员,这是因为其存在依赖于外部类的实例。 **实例化**: - **从外部类的非静态方法实例化**:可以在外部类的任何非静态方法中...

    java-内部类(InnerClass)详解.pdf

    Java 内部类,也称为嵌套类,是Java编程语言中的一种特殊特性,它允许一个类被定义在另一个类的内部。内部类分为几种类型,包括静态成员类(Static member class)、局部内部类(Local inner class)、匿名内部类...

    Java内部类语法总结.pdf

    在Java编程语言中,内部类是一个强大的特性,它允许我们在一个类的定义内部定义另一个类。内部类提供了更高级别的封装,并且可以访问外部类的所有成员,包括私有成员,这使得它们在处理复杂问题时非常有用。以下是...

    Java内部类知识整理[归类].pdf

    内部类可以访问外部类的所有成员,包括私有(private)成员,这为设计复杂和封装良好的类结构提供了便利。根据位置和使用方式,内部类主要分为四种类型:成员内部类、静态嵌套类(静态内部类)、方法内部类和匿名...

    Java对象和类 最详细说明

    - **嵌套类和接口(Nested Class and Interface)**:类中可以包含其他的类或接口。 **声明一个类的基本语法**: ```java class ClassName { // 字段 // 方法 } ``` **实例变量**:在类内部、方法外部定义的...

    Java面试宝典2017版

    - 抽象类可以包含抽象和非抽象方法,可以有静态的`main`方法,但`main`方法不能声明为`abstract`。 7. `clone()`方法: - 实现`Cloneable`接口的类通常需要重写`clone()`方法,以返回一个类的新实例,内容复制自...

    中软国际Java程序员笔试题及答案.pdf

    普通内部类对象隐式地保存了一个引用,指向创建它的外围类对象,不能有static数据和static字段。嵌套类意味着:1. 要创建嵌套类的对象,并不需要其外围类的对象;2. 不能从嵌套类的对象中访问非静态的外围类的对象。...

    JAVA内嵌类代码.rar

    Java内嵌类,也称为内部类,是Java编程语言中一个独特且强大的特性。它允许我们在一个类的定义内部创建另一个类,这种设计模式在处理复杂逻辑和封装方面提供了很大的灵活性。内嵌类分为四种主要类型:静态内嵌类、...

    Java中 类和对象

    - **嵌套类和内部类**:类中定义的其他类。 #### 对象(Object) 对象是类的一个实例。每个对象都有自己的状态和行为。对象可以通过其引用变量来访问。例如,如果有一个名为`Person`的类,那么`Person john = new ...

    java、Android面试宝典

    - Java中不能直接继承String类,因为String类被声明为final。 - 创建String对象时,使用new关键字和直接赋值有不同的含义,它们可能涉及不同的对象实例化过程。 - StringBuffer和String的主要区别在于...

    java遍历JSON树

    假设字符串`s`中包含一个嵌套的JSON对象,那么运行上述代码后,程序将会输出所有的叶子节点及其值。具体输出取决于字符串`s`的具体内容。 #### 六、注意事项 1. **异常处理:** 在实际应用中,应该对可能出现的...

    Java相关的面试题整了最新最全的Java常见面试题及答案

    接口允许一个类实现多个接口,从而“继承”多个接口的特性,但接口中的变量默认为public static final,方法默认为public abstract,所以如果两个接口中有相同的静态字段,会导致编译错误。另一方面,内部类(也称为...

    java面试题目.docx

    - 静态类:在Java中,静态类是嵌套类的一种,它被声明为static,不能有实例,只能通过其包含类的实例来访问。静态类主要用于组织代码,它们不能继承其他类,也不能被其他类继承。 - 抽象类:抽象类是不能实例化的...

    06 类与对象31

    在这个主题中,我们专注于类的特定方面,即“浅克隆”以及嵌套类,包括内部类和匿名内部类的使用。 首先,让我们讨论“浅克隆”。在Java中,对象的复制可以通过实现`Cloneable`接口来实现。当一个类想要支持克隆,...

    将Map转换成Java实体

    接着,遍历实体类的所有声明字段(不包括继承的字段),设置每个字段的值为Map中对应的键值。注意,由于Java的封装特性,我们需要通过`setAccessible(true)`使私有属性可访问。 这个方法虽然简单,但已经能够满足...

Global site tag (gtag.js) - Google Analytics