Java内部类详解:静态嵌套与实例内部类对比

需积分: 46 16 下载量 107 浏览量 更新于2024-08-07 收藏 9.62MB PDF 举报
"Java内部类-1-wire驱动指南" 这篇资源主要涵盖了Java编程语言中的内部类和一些基本概念,包括静态嵌套类与内部类的区别、编译错误的识别,以及一系列Java SE基础问题的解答。以下是相关知识点的详细说明: 1. **Java内部类**: - **静态嵌套类 (Static Nested Class)**:这种类可以独立于外部类的实例创建,它不持有对外部类的隐式引用。静态嵌套类的实例与外部类的实例之间没有直接关系,可以通过外部类名直接创建。 - **内部类 (Inner Class)**:内部类需要在外部类的一个实例存在的情况下才能实例化。内部类可以直接访问外部类的所有成员,包括私有成员。内部类的语法上,它们通常定义在外部类的成员位置。 2. **编译错误**: - 在给出的代码段中,`new Inner();` 在 `foo()` 方法中会导致编译错误,因为 `Inner` 是内部类,不能在静态方法中直接实例化,除非通过外部类的实例。而 `bar()` 方法中,由于它是外部类的非静态方法,因此可以直接创建内部类的实例。 3. **Java SE基础**: - **访问权限修饰符**:`public`、`private`、`protected` 和默认(包访问)各有不同的访问范围。 - **clone方法**:用于复制对象,但需要实现 `Cloneable` 接口以避免抛出 `CloneNotSupportedException`。 - **Java关键字**:Java没有 `goto` 关键字。 - **& 和 &&**:`&` 是位运算符,`&&` 是逻辑运算符,后者具有短路特性。 - **跳出多重嵌套循环**:使用 `break` 或 `return` 可以跳出最内层循环。 - **hashCode和equals**:两个对象值相同但hashCode不同是可能的,但违反了对象等价原则。 - **String不可继承**:Java中的 `String` 类是final的,不能被继承。 - **值传递和引用传递**:Java总是按值传递,但对象引用是按值传递的,这意味着方法可以修改对象状态。 - **重载和重写**:重载发生在同一个类中,根据方法名和参数列表区分;重写发生在子类中,根据方法名、参数列表和返回类型与父类方法完全一致。 - **返回类型不能区分重载**:重载不考虑返回类型,仅依赖方法名和参数列表。 - **char变量与中文字符**:char类型在Java中占2个字节,理论上可以存储某些中文字符。 - **抽象类与接口**:抽象类可以有实现方法,接口只能声明方法;类可以实现多个接口,但只能继承一个抽象类。 - **静态方法与抽象方法**:静态方法属于类,不能被重写;抽象方法必须在抽象类中,且没有实现。 - **静态变量与实例变量**:静态变量属于类,所有实例共享;实例变量属于对象,每个实例有自己的副本。 - **==与equals**:`==` 比较的是变量引用,而 `equals` 默认比较对象内容,但可以重写。 以上知识点是Java编程的基础,对于理解和编写Java代码至关重要。掌握这些概念将有助于提升编程技能和解决实际问题的能力。