`
929118967
  • 浏览: 21747 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
博客专栏
Fcebf22e-9505-38db-b3f2-65fdcc3fd6a5
java开发的深入浅出
浏览量:7116
文章分类
社区版块
存档分类
最新评论

java笔记之内部类

 
阅读更多

前言

内部类主要用于封装。任何内部类都会被编译成独立的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)语法:
放回值 方法名(参数列表){
class 类名{
类体
}
}
2)特性:
1))局部内部类访问局部变量时,局部变量需要final修饰;局部内部类可直接访问成员变量
2))局部内部类进行实例化是有范围的,只能在当前的这个方法中进行实例化。
3))局部内部类和局部变量一样的存在作用域。当方法执行完毕后,局部内部类的实例对象会被销毁。局部内部类的作用域存在于方法中。
4))局部内部类只能被【Default】修饰,另外还可被abstract,final修饰。

匿名内部类(重点)

可以定义在类的任何位置。犹如一句话。同时它无类名
1)语法:
类名 引用=new 类名(){
类体
}
2)特性:
1))匿名内部类中的{}是内部类的类体。类体中可定义属性和方法
2))匿名内部类无法定义构造器,因为匿名内部类没有类名。
3))匿名内部类的定义首先要创建对象,在创建对象后加入类体{}。
4))(重点)匿名内部类继承抽象类和实现接口时,只需在类体中实现其抽象方法。
该使用方式,在某种意义上使得抽象类和接口可实例化。
(这种方式也可以使用基类的引用指向子类的对象,是多态的表现形式之一)

总结

匿名内部类,本人是使用比较多的,在使用集合的comparator比较器时候,常常使用匿名内部类解决问题。


分享到:
评论

相关推荐

    java学习笔记(内部类)汇集

    ### Java学习笔记——内部类详解 #### 一、引言 Java中的内部类是一个非常有用但又容易让人感到困惑的概念。内部类本质上是在另一个类的内部定义的类,它可以访问外部类的所有成员变量和方法,甚至是私有成员。...

    java笔记 java笔记

    - **内部类分类**:成员内部类、局部内部类、静态内部类、匿名内部类。 - **成员内部类**:作为外部类的成员。 - **局部内部类**:定义在方法或代码块中。 - **静态内部类**:静态成员内部类,不依赖于外部类实例。 ...

    java笔记.zip

    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 ...

    java读书笔记笔记笔记笔记笔记笔记

    "this"关键字在Java中用于引用当前对象,常用于构造器链、避免成员变量和局部变量的混淆,以及在匿名内部类中引用外部类的成员。这个PPT文件可能详细解释了this关键字的用法和应用场景。 3. **Execution_files** - ...

    java代码笔记2010-06-01:Java内部类 静态内部类 局部内部类 明明内部类;StringBuffer reverse的使用;

    Java内部类是Java语言中一个独特且强大的特性,它允许我们在一个类的内部定义另一个类。内部类可以分为四种类型:静态内部类、成员内部类(非静态内部类)、局部内部类和匿名内部类。 1. **静态内部类**: 静态...

    毕向东Java笔记

    ### 毕向东Java笔记知识点总结 #### 第一章:编程基础 1. **Java的特性和优势**: - **简单性**:Java的设计哲学是“使编程变得简单”。 - **面向对象**:Java完全支持面向对象编程概念如封装、继承和多态。 - ...

    Java内部类基础笔记

    本篇笔记将详细介绍Java中的四种内部类:普通内部类、静态内部类、方法内部类以及匿名内部类。 ### A. 普通内部类 普通内部类(也称为成员内部类)是定义在外部类的成员位置,如同字段一样。它们可以直接访问外部...

    java超强笔记

    在面向对象高级特性的部分,笔记可能包含抽象类、接口、内部类、匿名类、枚举,以及泛型和注解的使用。这些特性使得Java代码更加灵活且易于维护。 最后,笔记可能还会涉及一些设计模式,如单例模式、工厂模式、观察...

    尚硅谷JAVA基础笔记吐血整理

    面向对象是Java的核心特性,主要包括类、对象、属性、方法、构造器、代码块和内部类。类是对象的模板,它包含属性(成员变量)和方法。属性是对象的状态,方法是对象的行为。构造器用于初始化新创建的对象,代码块...

    JAVA学习笔记达内内部使用,保证你没有看过

    【Java学习笔记达内内部使用,保证你没有看过】 这篇笔记是针对Java初学者和有一定经验的开发者设计的,由达内教育内部使用的资源,涵盖了从基础到进阶的全面内容,确保提供了一些鲜为人知的见解和深入理解。笔记...

    java学习笔记markdown

    9. **JVM内部机制**:简述Java虚拟机的工作原理,包括类加载、内存管理、垃圾回收机制,有助于优化代码性能。 10. **泛型**:讨论Java泛型的使用,如何编写类型安全的代码,并理解其类型擦除的原理。 11. **枚举与...

    黑马java教程知识点笔记整理

    【Java编程基础】 ...以上是黑马Java教程知识点笔记的主要内容,涵盖了Java编程的基础到进阶知识,是学习和巩固Java技能的重要参考资料。通过深入理解和实践这些知识点,开发者可以逐步提升Java编程能力。

    Java基础尚硅谷宋红康学习笔记

    内部类(包括成员内部类、局部内部类、匿名内部类)是Java特有的特性,允许在类内部定义其他类。 【Java高级】 Java高级部分涵盖了更复杂的特性和技术,包括: 1. **反射**:Java反射机制允许在运行时检查类的信息...

    个人整理java笔记

    面向对象编程是Java的核心特性之一,它允许开发者将复杂的程序结构化、模块化,通过对象的创建、交互来实现功能。 - **面向对象的基本概念**: - **抽象**: 抽象是从多个对象中提取共性的过程。在Java中,通常通过...

    马士兵JAVA笔记(全).docx

    马士兵JAVA笔记(全) 本资源是马士兵的JAVA笔记,涵盖了JAVA语言的基础知识,包括标识符、常量、变量、数据类型、运算符、控制流语句等。 标识符是JAVA中的一种符号,用于命名变量、方法、类等。标识符由字母、...

    Java学习笔记——良葛格

    JDK5.0引入了一些重要的新特性,例如自动内存管理的垃圾回收机制、枚举类型、匿名内部类、泛型以及增强的for循环(也称为foreach循环)。这些特性极大地提升了Java的可读性和实用性。 此外,笔记可能还会涉及异常...

    Java学习笔记(必看经典).pdf

    Java中的实例变量定义在类中但不在任何方法内部,它们是在对象实例化时被初始化的。局部变量则是在方法内部定义的变量,它们必须在使用前明确赋值。实例变量和局部变量都允许有命名冲突,但是它们的作用域不同。实例...

    郝斌Java笔记.pdf

    ### 郝斌Java笔记知识点概览 #### 一、Java 概述 - **起源与发展**:Java 语言起源于 Sun 公司的 Green 项目,最初是为了家用电器的网络控制而设计。HotJava 浏览器是 Java 技术在 Web 上应用的重要里程碑之一。 - ...

    JAVA经典教材笔记.pdf

    面向对象是Java的核心概念之一,封装性是面向对象三大特征之一,封装性可以隐藏对象的内部细节,仅对外提供接口。 面向对象(高级)章节继续深入探讨面向对象的相关概念,包括继承、final关键字、抽象类和接口的...

    java笔记以及案例

    此外,Java笔记中可能还会涵盖基本语法,如变量、常量、运算符、流程控制语句(如if-else、switch、for、while)、方法定义与调用等。这些是编写任何Java程序的基础。深入理解这些概念,能够写出结构清晰、逻辑严谨...

Global site tag (gtag.js) - Google Analytics