作者:Flyingis
4. 内部类拥有其外围类的所有元素的访问权,当某个外围类的对象创建了一个内部类对象时,此内部类对象必定会保存一个指向那个外围类对象的引用。然后,在访问此外围类的成员时,就是用那个“隐藏”的引用来选择外围类的成员。这与C++嵌套类的设计非常不同,在C++中只是单纯的名字隐藏机制,与外围对象没有联系,也没有隐含的访问权。
另外,一个内部类被嵌套多少层并不重要,它能透明访问所有它所嵌入的外围类的所有成员。
5. 在Java中实现C++的嵌套类功能也是通过嵌套类的机制来实现的,区别是C++中的嵌套类不能访问私有成员,在Java中则可以。
在Java中,使用嵌套类可以使得内部类对象与其外围类对象之间有联系,语法上是将内部类声明为static。而在普通的内部类中是不能有static数据、static字段和嵌套类的。通常,我们可以在一个普通的内部类中,通过一个特殊的this引用链接到其外围类对象,如外围类是Fruit,那么在内部类中应该通过Fruit.this来引用外围类的对象。
6. 内部类的继承比较特殊,我通过一个例子来向大家展示:
class Fruit {
class Inner {}
}
public class Apple extends Fruit.Inner {
Apple(Fruit f) {
f.super(); //为什么要这样使用我也不明白
}
public static void main(String[] args) {
Fruit f = new Fruit();
Apple a = new Apple(f);
}
}
其中为什么要外围类调用super()方法我也不清楚,希望有人指点!
7. 当继承某个外围类的时候,内部类并没有发生任何改变,基类和继承类中的两个内部类是完全独立的实体,各自在自己的命名空间内。如果明确继承某个内部类,则会覆盖原来的内部类。如:
public class A extends Atop {
public Inner extends Atop.Inner {}
}
8. 局部内部类和匿名内部类在功能上基本相似,它们的区别在于,如果我们需要一个已命名的构造器,或者需要重载构造器,就要使用局部内部类,它可以提供多个内部类对象。匿名内部类只能用于实例初始化。
9. 内部类标识符是外围类的名字+$+内部类的名字,如果内部类是匿名的,则会由编译器产生一个数字作为其标识符。
分享到:
相关推荐
### Java内部类详解 #### 一、内部类的分类与概念 Java的内部类机制是其强大特性之一,它允许类作为另一个类的成员存在,从而增强了代码的封装性和复用性。根据定义和作用域的不同,Java内部类主要分为四类: 1. ...
Java 内部类是 Java 语言的一个重要特性,允许在一个类的定义内嵌套其他类。这使得 Java 能够实现一些特殊的编程模式,比如模拟多重继承和解决多次实现问题。内部类根据其定义的位置和用途,可以分为四种类型:成员...
Java内部类是Java语言的一个独特特性,它允许我们在一个类的内部定义另一个类。这种设计提供了更高级别的封装和组织代码的方式。以下是关于内部类及其相关知识点的详细说明: 1. **内部类基本语法** - **实例内部...
Java内部类是Java语言的一个特色特性,它允许我们在一个类的内部定义另一个类。这种设计模式在处理一些特定情况时非常有用,例如实现匿名回调、封装特定逻辑或创建与外部类有紧密关系的类。本篇文章将深入探讨Java...
Java 内部类是Java语言特性中的一个重要组成部分,它允许我们在一个类的内部定义另一个类。内部类可以访问外部类的所有成员,包括私有成员,这使得内部类在实现复杂逻辑和封装上具有很大的灵活性。下面我们将详细...
### JAVA内部类总结 在Java编程语言中,内部类(Inner Classes)是一种非常重要的特性,它允许我们在一个类的内部定义另一个类。这种结构不仅能够提高...希望本文能帮助开发者更好地理解和应用Java内部类的相关知识。
Java内部类是Java语言提供的一种独特特性,它允许我们在一个类的定义内部定义另一个类。这种内部类可以是成员内部类、局部内部类、匿名内部类或静态内部类,每种都有其特定的用途和使用场景。在这个"java内部类使用...
Java 内部类是 Java 语言的一个重要特性,它允许在一个类的内部定义另一个类。内部类的概念在 Java 中有着广泛的应用,特别是在处理复杂的继承问题和实现特定设计模式时。以下将详细介绍 Java 内部类的基本概念、...
Java内部类是Java语言特性中一个独特而强大的部分,它允许在一个类的内部定义另一个类。内部类可以访问外部类的所有成员,包括私有成员,这使得内部类在实现某些特定设计模式时非常有用。本篇文章将深入探讨Java中的...
本篇文章将深入探讨Java匿名内部类的使用规范,帮助你更好地理解和应用这一特性。 首先,理解匿名内部类的基本概念。匿名内部类没有名字,它不能被其他类直接引用,但可以作为局部变量、成员变量或者方法参数。它...
### Java静态内部类(嵌套类)详解 #### 一、静态内部类概念与特性 在Java编程语言中,静态内部类(也被称为嵌套类)是一种特殊的内部类形式,它通过`static`关键字来定义。与普通内部类相比,静态内部类具有以下...
Java内部类是Java语言中一个独特且强大的特性,它允许在一个类的定义内部定义另一个类。内部类可以访问外部类的所有成员,包括私有成员,这使得内部类在实现某些特定设计模式时非常有用。本篇文章将深入探讨Java内部...
Java内部类是Java语言中一个独特且强大的特性,它允许我们在一个类的内部定义另一个类。内部类可以分为四种类型:静态内部类、成员内部类(非静态内部类)、局部内部类和匿名内部类。 1. **静态内部类**: 静态...
Java集合框架是Java编程...总之,这个资料包涵盖了Java集合框架和内部类的基础知识,对于想要深入理解Java编程的开发者来说,是一份宝贵的学习资源。通过学习,你可以提升在处理数据集合和实现复杂设计模式上的能力。
Java内部类是Java语言中一个独特且强大的特性,它允许我们在一个类的内部定义另一个类。内部类可以作为外部类的成员,具有访问外部类的所有域的权限,无论是public、protected还是private。这种访问能力使得内部类能...
Java内部类是Java编程语言中的一个特色特性,它允许在一个类的定义内部定义另一个类。这种设计模式在处理一些特定的复杂情况时非常有用,比如实现事件监听、封装临时对象或者创建私有辅助类等。以下是对Java内部类的...
学习“Java4Android 35_内部类和匿名内部类”这个教程,开发者将掌握如何有效地利用内部类和匿名内部类,提升代码的结构和功能,特别是在Android应用开发中,这两个特性对于构建组件和事件处理尤为重要。通过观看...
Java内部类是Java语言中一个独特且强大的特性,它允许在一个类的定义内定义另一个类。内部类可以分为四种类型:成员内部类、局部内部类、匿名内部类和静态内部类。下面我们将深入探讨内部类的使用方法和优势。 首先...
Java内部类是Java编程语言中的一个特色特性,它允许在一个类的定义内部定义另一个类。这种设计模式在处理复杂的代码组织...学习和理解Java内部类有助于提升代码的灵活性和可维护性,尤其是在处理复杂的面向对象设计时。