Java面向对象基础——10.内部类
Java内部类总结
Java中的内部类(Nested Class)是指定义在另一个类内部的类,使用较少但是需要了解。
1. 内部类(Inner Class)
- 定义方式:在外部类内部直接定义的类,无static修饰
class Outer {
class Inner { ... }
}
- 核心特性:
- 必须依附于外部类实例存在,不能单独创建
- 实例化方式:
Outer.Inner inner = outer.new Inner(); - 持有外部类实例的引用,可通过
Outer.this访问 - 可直接访问外部类的private字段和方法
- 编译产物:生成
Outer$Inner.class文件
2. 匿名类(Anonymous Class)
- 定义方式:在方法内部直接定义并实例化,无需显式类名
Runnable r = new Runnable() {
@Override
public void run() { ... }
};
- 核心特性:
- 必须在定义时立即实例化
- 可实现接口或继承普通类
- 同样持有外部类实例引用,能访问其private成员
- 适用于仅需一次性使用的简单类
- 编译产物:生成
Outer$1.class、Outer$2.class等文件(按出现顺序编号)
3. 静态内部类(Static Nested Class)
- 定义方式:用static修饰的内部类
class Outer {
static class StaticNested { ... }
}
- 核心特性:
- 独立存在,无需依附外部类实例
- 实例化方式:
Outer.StaticNested sn = new Outer.StaticNested(); - 不能访问外部类的非静态成员,只能访问静态成员
- 拥有外部类private成员的访问权限
- 本质:逻辑上与外部类关联的独立类
共性与差异
| 类型 | 依附外部类实例 | 访问外部类private成员 | 静态成员访问 |
|---|---|---|---|
| Inner Class | 是 | 是 | 可访问静态和非静态 |
| Anonymous Class | 是 | 是 | 可访问静态和非静态 |
| Static Nested Class | 否 | 是 | 仅可访问静态 |
内部类的主要作用是实现类的逻辑聚合,同时保持对外部类私有成员的访问能力,在设计模式和回调机制中应用广泛。
Java面向对象基础——10.内部类的更多相关文章
- 【重走Android之路】【Java面向对象基础(三)】面向对象思想
[重走Android之路][基础篇(三)][Java面向对象基础]面向对象思想 1 面向对象的WWH 1.1 What--什么是面向对象 首先,要理解“对象”.在Thinkin ...
- 【重走Android之路】【Java面向对象基础(一)】数据类型与运算符
[重走Android之路][基础篇(一)][Java面向对象基础]数据类型与运算符 1.数据类型介绍 在Java中,数据类型分为两种:基本数据类型和引用类型. 基本数据类型共8种,见下表: 基本数 ...
- java面向对象-基础入门
java面向对象-基础入门 面向过程:线性思维 面向对象思维:物以类聚,分类的思维 对于描述复杂的事物,为了从宏观上把握,从整体上合理分析,我们需要使用面向对象的思路来分析整个系统,但是具体到某个微观 ...
- 【重走Android之路】【Java面向对象基础(二)】细说String、StringBuffer和StringBuilder
[重走Android之路][基础篇(二)][Java面向对象基础]细说String.StringBuffer和StringBuilder 1.String String是Java中的一个final ...
- Java面向对象 Object类 内部类
Java面向对象 Object类 内部类 知识概要: 一:Object类 二:内部类 匿名内部类的写法 1.Object O ...
- 086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结
086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结 本文知识点:面向对象基础(类和对象)总结 说明 ...
- 085 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 04 构造方法调用
085 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 04 构造方法调用 本文知识点:构造方法调用 说明:因为时间紧张,本人写博客过程中只是 ...
- 084 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 03 构造方法-this关键字
084 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 03 构造方法-this关键字 本文知识点:构造方法-this关键字 说明:因为时间紧 ...
- 083 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 02 构造方法-带参构造方法
083 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 02 构造方法-带参构造方法 本文知识点:构造方法-带参构造方法 说明:因为时间紧张, ...
- 082 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 01 构造方法-无参构造方法
082 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 01 构造方法-无参构造方法 本文知识点:构造方法-无参构造方法 说明:因为时间紧张, ...
随机推荐
- js格式化货币方法
闲来无事自己基于原生js方法封装了一个可用于常见货币格式化的方法,具体方法封装如下: /** * 格式化人民币金额 * @param number num 数字金额 * @param string s ...
- java面向切面编程---AOP之环绕通知
package com.xlkh.bigscreen.common.aspect; import com.alibaba.fastjson.JSON; import com.fasterxml.jac ...
- 支付宝携手HarmonyOS SDK实况窗,开启便捷停车生活
6月,华为开发者大会2025与全球开发者一起,用代码和创新编制智慧时代的经纬.这里不仅是技术峰会,更是开发者的「主场」,6月21日,<HarmonyOS SDK使能高效开发,打造优质创新应用体验 ...
- leetcode 240 搜索二维矩阵
简介 一时半会儿没啥思路. 官方那种 移动指针的思路挺不错的. code class Solution { public boolean searchMatrix(int[][] matrix, in ...
- java 使用反射 实现指针
简介 java 使用反射 实现指针,但不推荐使用,推荐使用 interface code package com; import java.lang.reflect.*; public class M ...
- Draw.io Shortcuts
- Iterable:一个容易被忽视的Python编码细节
Type hints 近年来,越来越多的 Python 开发者愿意为变量声明类型了,变化非常明显. def add(left, right): return left + right from typ ...
- SciTech-EECS-Devices-Mobile-Memory: 移动设备(Cellphone/Pad/Watch)的 Memory(运存)、Flash(闪存) 和 SDcard(可扩展外部存储, SD卡是事实上标准)
SciTech-EECS-Devices-Mobile-Memory: 移动设备的 Memory(运存) 和 Flash(闪存) 存储设备的 读写速度 与 硬件设备的技术规格, 存储大小, 处理器性能 ...
- SciTech-Anatomy-Tooth
0. 牙: 成人牙:称为 恒牙,上下各16颗, 以牙科医师面对患者视角,对上下两排牙编号: - 上排:共16颗,从左到右编号 1号 - 16号, 左右两侧对称,每侧各8颗: {Molars:3,Pre ...
- POLIR-Society-Management-CNO5R+Leading: 管理Leading(引领工作)的几个要点:立场(目标人群)+金钱价值观+需求+服务产品+管理控制_复杂和不确定性+领导力{做人做事思想}+管理{ 三管五带七抓 }
POLIR-Society-Management-Leading: 管理Leading(引领工作)的几个要点: Customer SATISFACTION: 我们最终为"何种目标人群&quo ...