内部类定义:是定义在另一个类中的类。
内部类的作用:
- 内部类方法可以访问该类定义所在的作用域中的数据,包括私有数据。
- 内部类可以对同一个包中的其他类隐藏起来。
- 当想要定义一个回调函数且不想编写大量代码时,使用匿名内部类比较便捷。
内部类点滴:
- 只有内部类可以是私有类,而常规类只能具有包可见性或者公有可见性。
- 内部类对象拥有一个对外围类对象的隐式引用,这个引用是通过内部类构造器传递过来的,编译器会对这个构造器进行修改,以便添加一个外围类的引用参数。(注:这是一个编译器行为)
- 内部类的特殊语法规则。OutClass.this引用外部类对象,OuterObject.new InnerClass(args)创建内部类
- 内部类的内部
- 局部内部类。不能用public或者private访问控制符进行声明,引用的局部变量是final的。(想想为什么是final的?因为内部类会备份一份final的局部变量,是为了直到他执行的时候变量的值没有发生变化)
- 静态内部类。使用内部类是为了把一个类隐藏在另一个类的内部,并不需要内部类的引用外围类对象。为此,可以将内部类声明为static,以便取消引用,当然只有内部类可以声明为static,静态内部类的对象除了没有对生成它的外围类对象的引用特权外,与其他的所有内部类完全一样。
public class CheckBox {
private boolean checked;
//这个内部类是包可见性,只有包含它的外围类和它所在的包中的其他类能访问到它,当然子类也可以访问的到
class OnClickListener{
//虽然是public,由于类本身是包访问权限,所以受限于包权限
public void itemClick(){
System.out.println("我被点击了");
}
}
//不写操作修饰符,默认的是default,包访问权限
boolean isChecked(){
return checked;
}
//这个内部类是完全公开的,可以被外部其他包的类访问
public class onDoubleClickListener{
//可以被访问的到
public void itemClick(){
System.out.println("我被双击了");
}
}
//只可以被外围类访问的到
private class onMouseOverListener{
//受限于类本上是private,所以只有外围类能访问的到
public void itemOver(){
System.out.println("鼠标飘过去了");
}
}
}
分享到:
相关推荐
复习时,可以详细阅读`Java抽象类.docx`来理解抽象类的定义、用途和实例化规则,通过`Java接口.docx`学习接口的定义、实现方式以及多继承的特点,`Java内部类.docx`将帮助你掌握不同类型的内部类及其应用场景。...
3. **静态内部类与普通内部类(Inner Class)**: - 静态内部类可以在没有外部类实例的情况下创建,且不能直接访问外部类的非静态成员。 - 普通内部类需要一个外部类的实例来创建,可以直接访问外部类的所有成员,...
计算机后端-Java-Java核心基础-第17章 异常处理 04. 复习:内部类.avi
内部类是Java语言中一个重要的特性,它允许在类的内部定义另一个类。这种内部定义的类被称为内部类,而包含它的类则被称为外部类。内部类的使用极大地提高了程序设计的灵活性和封装性。 #### 二、成员内部类 成员...
- **内部类**:一个类被定义在另一个类的内部。 - **构造方法**:用于初始化对象的方法。 - **代码块**:用于执行特定的初始化操作。 #### 十五、浮点型数据的处理 - **问题**:由于浮点数的二进制表示方式,在...
JAVA理论知识基础复习涵盖了JAVA语言的基础知识,包括构造方法、new关键字、方法的重载、特殊变量this、static定义常量、继承、方法的重写、特殊变量super、多态性、接口和抽象类的区别、内部类和异常处理等相关知识...
这些知识点通常会出现在公司内部的JAVA基础复习题中,通过练习这些题目,开发者可以巩固理论知识,提升实际编程技能。每个xls文件可能包含了针对上述知识点的不同题目,通过解答,可以帮助你更好地准备公司的Java...
- **数据类型**:Java有两类数据类型:基本数据类型(如int、char、float等)和引用数据类型(如类、接口、数组)。 - **变量**:存储数据的容器,声明时需指定数据类型。 - **常量**:用final关键字定义,一旦...
11. **内部类**:Java支持类的嵌套,包括成员内部类、局部内部类、匿名内部类和静态内部类,提供了更灵活的代码组织方式。 12. **设计模式**:设计模式是解决常见问题的最佳实践,如单例模式、工厂模式、建造者模式...
1. **面向对象编程**:Java是一种面向对象的语言,复习题中会涵盖类、对象、继承、多态等概念。理解类的构造函数,了解如何通过对象调用方法,以及如何使用继承来实现代码复用和类的层次结构是必要的。 2. **封装与...
"Java-study 复习java.zip"这个压缩包文件显然是为学习和复习Java编程所准备的资源集合。让我们深入探讨Java语言的一些核心概念和技术。 1. **Java简介** Java是由Sun Microsystems(现已被Oracle收购)开发的一种...
在Java编程语言中,"类"与"对象"是核心概念,它们构成了面向对象编程的基础。本文将深入探讨这两个概念,以及如何在实际编程中应用它们。 首先,我们需要理解"类"。在Java中,类可以看作是蓝图或者模板,它定义了一...
12. 内部类是在一个类内嵌套定义的类,特点是只能在定义它的类或程序段中或表达式内匿名使用,外部使用时必须给出类的全名。 13. 接口与类的层次无关,通过接口可以说明类所实现的方法。 六、Java异常处理: 14. ...
12. **内部类**:Java支持成员内部类、局部内部类、匿名内部类和静态内部类等实现方式。 13. **排序和序列化实现**:除了上述的快速排序,还有其他排序算法实现,如归并排序、希尔排序等。序列化实现可以是直接实现...
在内部类与外部类中,`this`可以区分同一作用域内的不同变量,`A.this`明确指定了外部类的成员。 数组是Java中的一个重要数据结构,它可以存储同类型的多个元素。数组是引用类型,声明时不需要指定大小,但在创建时...
### Java基础复习知识点详解...- **内部类**:可以嵌套在一个外部类中。 - 成员内部类 - 局部内部类 - 静态内部类 - 匿名内部类 以上是关于Java基础复习的知识点详解,对于理解Java的核心概念和编程实践非常重要。
### Java面试复习资料详解 #### 一、内存泄漏与内存溢出 - **内存泄漏**:指程序在申请内存后,无法释放已分配的内存空间,导致随着时间的推移,程序所消耗的内存逐渐增加。这通常是因为程序员未能正确地管理内存...
深入理解内部类 javac和javap Java8新特性终极指南 序列化和反序列化 继承封装多态的实现原理 集合类 Java集合类总结 Java集合详解:一文读懂ArrayList,Vector与Stack使用方法和实现原理 Java集合详解:Queue和...
- `private`:私有,只能在定义该成员的类内部访问。 - **子类的构造方法**: - 子类可以通过`super`调用父类的构造方法。 - **`Object`类**: - 是所有类的基类,提供了`toString()`、`equals()`等方法。 - *...