一.内部类概述
在JAVA的一个类中可以嵌套一个类的定义,嵌套定义的那个类就是所谓的内部类。如果这个内部类不是一个静态内部类,下面的讨论就是针对非静态的内部类而言的。那么该内部类对其外部类的所有成员都有访问权限,就好像内部类拥有外部类的这些成员一样。那么这是怎么做的呢?其实很简单,内部类中保存了一个外部类的引用,通过这个引用,内部类可以访问外部类的所有成员,既然是通过这个引用来实现的,那么创建内部类对象时必须要获取到这样一个外部类的引用,只有这样才能保证上面的机制。
二.看一段源代码
public class Parcel2 {
private int num = 0;
class Contents {
private int i = 11;
int value() {
// 4.使用外围类的this引用访问私有成员变量num
this.i = Parcel2.this.num;
// this.i = num;
return i;
}
}
class Destination {
private String label;
Destination(String whereTo) {
this.label = whereTo;
}
String readLabel() {
return this.label;
}
}
public Destination to(String s) {
// 1.直接使用内部类的名字
return new Destination(s);
}
public Contents contents() {
// 2.直接使用内部类的名字
return new Contents();
}
public static void main(String[] args) {
Parcel2 p = new Parcel2();
// 3.这里不能直接使用内部类的名字
Contents c1 = p.new Contents();
}
}
1.看看上述源代码,我们发现这样一个规律,在外围类的非静态方法中创建一个内部类对象,此时不需要.new语法,直接创建即可,因为调用非静态方法的时候,会把this对象隐式传递进来,所以不需要.new语法来告诉它外围对象的引用。但是在静态方法中创建内部类的对象时,内部类是无法获取外围类的引用的,因为调用静态方法时外围类的引用不会隐式传递到方法的内部的
2.看看注释中的第四点,在内部类中我们可以使用外内名称.this来获取到外围类的引用,通过这个引用可以访问外围类的成员,当然访问外围类的成员未必需要显式的使用这个this引用。
分享到:
相关推荐
Java内部类是Java语言的一个独特特性,它允许我们在一个类的内部定义另一个类。这种设计提供了更高级别的封装和组织代码的方式。以下是关于内部类及其相关知识点的详细说明: 1. **内部类基本语法** - **实例内部...
下面是 Java 中的一些小知识点,希望对您有所帮助。 局部变量与成员变量的区别 局部变量定义在方法体中,而成员变量定义在类体中。系统会为成员变量赋初值,而不会给局部变量赋初值,所以局部变量必须在初始化以后...
JVM 是可运行 Java 代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、 一个垃圾回收,堆 和 一个存储方法域。JVM 是运行在操作系统之上的,它与硬件没有直接 的交互。 3. JAVA 集合 集合类存放于 ...
以下是对标题中"Java内部类.pdf"文件的知识点进行的详细说明: 1. 内部类的分类 在Java中,内部类主要有四种类型:成员内部类、局部内部类、匿名内部类和静态内部类。 - 成员内部类:定义在外部类的成员位置,可以...
Java中的内部类是指在另一个类中定义的类。内部类可以访问外部类的所有成员变量和成员方法。内部类可以是静态内部类,也可以是非静态内部类。静态内部类不能访问外部类的非静态成员变量和成员方法。 继承 Java中的...
Java内部类是Java语言中一个独特且强大的特性,它允许我们在一个类的内部定义另一个类。内部类可以分为四种类型:静态内部类、成员内部类(非静态内部类)、局部内部类和匿名内部类。 1. **静态内部类**: 静态...
Java内部类是Java语言特性中一个独特且强大的概念,它允许在另一个类的定义内部创建类。这种设计模式提供了一种灵活的方式来封装与外部类有紧密关系的代码,并且能够直接访问外部类的私有成员。以下是关于Java内部类...
以下是关于Java成员内部类的一些关键知识点: 1. **分类**:成员内部类分为两种,静态内部类(Static Inner Class)和非静态内部类(Non-static Inner Class)。非静态内部类可以直接访问外部类的实例变量和方法,...
以上知识点在"JAVA知识点总结思维导图(xmind)"中可能以思维导图的形式详细展开,包括每个主题的子话题和相关实例,帮助学习者系统地理解和掌握Java编程。通过深入学习和实践这些知识点,可以成为一名熟练的Java...
Java 内部类是 Java 语言的一个特性,它允许在一个类的定义内部定义另一个类。这种设计模式在处理某些特定情况时非常有用,比如当一个类的实例与另一个类紧密关联,或者需要实现某种形式的多继承。在这个实验中,...
Java 中的内部类和匿名类是非常重要的知识点,它们可以让你更优雅地设计你的程序结构。内部类可以隐藏你不想让别人知道的操作,提高程序的安全性和可维护性。匿名类可以用来实现一些简单的接口或抽象类,提高程序的...
复习时,可以详细阅读`Java抽象类.docx`来理解抽象类的定义、用途和实例化规则,通过`Java接口.docx`学习接口的定义、实现方式以及多继承的特点,`Java内部类.docx`将帮助你掌握不同类型的内部类及其应用场景。...
本文档旨在为Java开发者提供一个 hệ thống的面试知识点整理,涵盖了Java的核心概念、JVM的工作原理、Java编程语言的基本语法和高级特性等多方面的知识点。下面是对该文档的详细解读。 JVM知识点 JVM(Java ...
以下是对这些知识点的详细说明: 一、Java概述: Java是由Sun Microsystems开发的一种跨平台的编程语言,它具有“一次编写,到处运行”的特性,通过Java虚拟机(JVM)实现平台无关性。Java有丰富的类库支持,适用于...
Java知识点总结 1. 前言 Java作为一种广泛使用的编程语言,因其平台无关性、安全性和稳定性而受到青睐。本资源旨在为初学者和有经验的开发者提供一个全面的Core Java知识概述,帮助大家更好地理解和掌握Java的核心...
### Java接口与内部类知识点详解 #### 接口概述 - **接口定义**: 在Java中,接口(Interface)是一种抽象类型,它定义了一组方法签名(即方法的名称和参数列表),但没有具体实现(即没有方法体)。接口提供了一种...
Java内部类是Java编程语言中的一个特性,它允许在一个类的内部定义另一个类。内部类可以有自己的成员变量和方法,可以访问外部类的所有成员(包括私有成员),并且可以为不同的外部类对象创建多个实例。 根据提供的...
在Java编程中,反射是一个非常强大的工具,它允许程序在运行时检查类、接口、字段和方法的信息,并且能够创建和操作对象。本文将详细介绍如何使用Java反射技术来获取内部类中的静态成员变量的值。 #### 二、背景...
Java 内部类是 Java 语言的一个重要特性,允许在一个类的定义内嵌套其他类。这使得 Java 能够实现一些特殊的编程模式,比如模拟多重继承和解决多次实现问题。内部类根据其定义的位置和用途,可以分为四种类型:成员...
Java内部类是Java编程语言中的一个独特特性,它允许在一个类的内部定义另一个类。这种设计模式在处理一些复杂情况时特别有用,比如实现事件监听器或者创建匿名类。内部类分为四种类型:成员内部类、局部内部类、匿名...