前言
内部类主要用于封装。任何内部类都会被编译成独立的class文件,class文件名:外部类$内部类;内部类用于封装,所以很少被外部调用。
正文
内部类
1.概念:在一个类中定义另外一个类。内部类包含在它所定义的外部类的类体中
2.分类:按照内部类定义的位置分类,可分为静态内部类,成员内部类,匿名内部类,局部内部类。
静态内部类
在类体中定义,以静态成员的形式出现的类。
1)语法:
static class 类名{
类体
}
2)特性:
1))在静态内部类中访问外部类的成员,该成员必须是为静态的。但可以使用外部类的对象引用来访问外部类的非静态成员。
2))在静态内部类中访问外部类的方法,该方法必须是为静态的。但可以使用外部类的对象引用来访问外部类的非静态方法。
3))在外部类访问内部类的静态方法,使用内部类类名.方法名。访问内部类的非静态方法使用内部类引用.方法名。代码示例:
<script src="https://code.csdn.net/snippets/267803.js" type="text/javascript"></script>
4))静态内部类的实例化方式:外部类的类名.内部类的类名 变量名 = new 外部类类名.内部类名();
5))静态内部类可被四大访问控制符所修饰
成员内部类
在类中定义的类,该类以成员的形式出现,和类的属性和方法同级
1)语法:
class 类名{
类体
}
2)特性:
1))成员内部类可访问外部类的静态成员和非静态成员.
2))成员内部类无法再外面的类直接实例化,但可通过内部类所在的外部类中提供一个返回内部类实例的方法。示例如下:
<script src="https://code.csdn.net/snippets/267811.js" type="text/javascript"></script>
3))成员内部类可被四大访问控制符所修饰
4))成员内部类可定义为抽象的成员内部类
5))成员内部类可继承为抽象的成员内部类
6))成员内部类不能包含静态方法。外部类访问成员内部类的成员,只能通过内部类的引用访问。
局部
局部内部类
它可定义在一个方法中,不能被static修饰,相当于一条java语句。
1)语法:
放回值 方法名(参数列表){
}
2)特性:
1))局部内部类访问局部变量时,局部变量需要final修饰;局部内部类可直接访问成员变量
2))局部内部类进行实例化是有范围的,只能在当前的这个方法中进行实例化。
3))局部内部类和局部变量一样的存在作用域。当方法执行完毕后,局部内部类的实例对象会被销毁。局部内部类的作用域存在于方法中。
4))局部内部类只能被【Default】修饰,另外还可被abstract,final修饰。
匿名内部类(重点)
可以定义在类的任何位置。犹如一句话。同时它无类名
1)语法:
类名 引用=new 类名(){
类体
}
2)特性:
1))匿名内部类中的{}是内部类的类体。类体中可定义属性和方法
2))匿名内部类无法定义构造器,因为匿名内部类没有类名。
3))匿名内部类的定义首先要创建对象,在创建对象后加入类体{}。
4))(重点)匿名内部类继承抽象类和实现接口时,只需在类体中实现其抽象方法。
该使用方式,在某种意义上使得抽象类和接口可实例化。
(这种方式也可以使用基类的引用指向子类的对象,是多态的表现形式之一)
总结
匿名内部类,本人是使用比较多的,在使用集合的comparator比较器时候,常常使用匿名内部类解决问题。
分享到:
相关推荐
### Java学习笔记——内部类详解 #### 一、引言 Java中的内部类是一个非常有用但又容易让人感到困惑的概念。内部类本质上是在另一个类的内部定义的类,它可以访问外部类的所有成员变量和方法,甚至是私有成员。...
- **内部类分类**:成员内部类、局部内部类、静态内部类、匿名内部类。 - **成员内部类**:作为外部类的成员。 - **局部内部类**:定义在方法或代码块中。 - **静态内部类**:静态成员内部类,不依赖于外部类实例。 ...
2020-4-6 java笔记 ---内部类 2020-4-6 java笔记 ---异常 2020-4-6 java笔记 --多线程 2020-4-8 java笔记 String类 2020-4-9 java 比较器 2020-4-10 java笔记 枚举类 2020-4-10 java 注解(Annotation) 2020-4-11 ...
"this"关键字在Java中用于引用当前对象,常用于构造器链、避免成员变量和局部变量的混淆,以及在匿名内部类中引用外部类的成员。这个PPT文件可能详细解释了this关键字的用法和应用场景。 3. **Execution_files** - ...
Java内部类是Java语言中一个独特且强大的特性,它允许我们在一个类的内部定义另一个类。内部类可以分为四种类型:静态内部类、成员内部类(非静态内部类)、局部内部类和匿名内部类。 1. **静态内部类**: 静态...
### 毕向东Java笔记知识点总结 #### 第一章:编程基础 1. **Java的特性和优势**: - **简单性**:Java的设计哲学是“使编程变得简单”。 - **面向对象**:Java完全支持面向对象编程概念如封装、继承和多态。 - ...
本篇笔记将详细介绍Java中的四种内部类:普通内部类、静态内部类、方法内部类以及匿名内部类。 ### A. 普通内部类 普通内部类(也称为成员内部类)是定义在外部类的成员位置,如同字段一样。它们可以直接访问外部...
在面向对象高级特性的部分,笔记可能包含抽象类、接口、内部类、匿名类、枚举,以及泛型和注解的使用。这些特性使得Java代码更加灵活且易于维护。 最后,笔记可能还会涉及一些设计模式,如单例模式、工厂模式、观察...
面向对象是Java的核心特性,主要包括类、对象、属性、方法、构造器、代码块和内部类。类是对象的模板,它包含属性(成员变量)和方法。属性是对象的状态,方法是对象的行为。构造器用于初始化新创建的对象,代码块...
【Java学习笔记达内内部使用,保证你没有看过】 这篇笔记是针对Java初学者和有一定经验的开发者设计的,由达内教育内部使用的资源,涵盖了从基础到进阶的全面内容,确保提供了一些鲜为人知的见解和深入理解。笔记...
9. **JVM内部机制**:简述Java虚拟机的工作原理,包括类加载、内存管理、垃圾回收机制,有助于优化代码性能。 10. **泛型**:讨论Java泛型的使用,如何编写类型安全的代码,并理解其类型擦除的原理。 11. **枚举与...
【Java编程基础】 ...以上是黑马Java教程知识点笔记的主要内容,涵盖了Java编程的基础到进阶知识,是学习和巩固Java技能的重要参考资料。通过深入理解和实践这些知识点,开发者可以逐步提升Java编程能力。
内部类(包括成员内部类、局部内部类、匿名内部类)是Java特有的特性,允许在类内部定义其他类。 【Java高级】 Java高级部分涵盖了更复杂的特性和技术,包括: 1. **反射**:Java反射机制允许在运行时检查类的信息...
面向对象编程是Java的核心特性之一,它允许开发者将复杂的程序结构化、模块化,通过对象的创建、交互来实现功能。 - **面向对象的基本概念**: - **抽象**: 抽象是从多个对象中提取共性的过程。在Java中,通常通过...
马士兵JAVA笔记(全) 本资源是马士兵的JAVA笔记,涵盖了JAVA语言的基础知识,包括标识符、常量、变量、数据类型、运算符、控制流语句等。 标识符是JAVA中的一种符号,用于命名变量、方法、类等。标识符由字母、...
JDK5.0引入了一些重要的新特性,例如自动内存管理的垃圾回收机制、枚举类型、匿名内部类、泛型以及增强的for循环(也称为foreach循环)。这些特性极大地提升了Java的可读性和实用性。 此外,笔记可能还会涉及异常...
Java中的实例变量定义在类中但不在任何方法内部,它们是在对象实例化时被初始化的。局部变量则是在方法内部定义的变量,它们必须在使用前明确赋值。实例变量和局部变量都允许有命名冲突,但是它们的作用域不同。实例...
### 郝斌Java笔记知识点概览 #### 一、Java 概述 - **起源与发展**:Java 语言起源于 Sun 公司的 Green 项目,最初是为了家用电器的网络控制而设计。HotJava 浏览器是 Java 技术在 Web 上应用的重要里程碑之一。 - ...
面向对象是Java的核心概念之一,封装性是面向对象三大特征之一,封装性可以隐藏对象的内部细节,仅对外提供接口。 面向对象(高级)章节继续深入探讨面向对象的相关概念,包括继承、final关键字、抽象类和接口的...
此外,Java笔记中可能还会涵盖基本语法,如变量、常量、运算符、流程控制语句(如if-else、switch、for、while)、方法定义与调用等。这些是编写任何Java程序的基础。深入理解这些概念,能够写出结构清晰、逻辑严谨...