内部类:
使用内部类减少了命名冲突。
一个内部类可以定义在一个类中,一个方法中甚至一个表达式中。
内部类分为四种:
静态内部类(static inner classes)
成员内部类(member inner classes)
局部内部类(local inner classes)
匿名内部类(anonymous inner classes)
成员内部类(member inner classes)
局部内部类(local inner classes)
匿名内部类(anonymous inner classes)
1、静态内部类(static inner classes)
最简单的内部类。
只能访问外部类的静态成员变量与静态方法。
生成静态内部类对象的方法:
OuterClass.InnerClass inner = new OuterClass.InnerClass();
1.1、相关使用例子:
静态内部类:
class StaticInner{ private static int a = 1; /** * 静态内部类 * 生成的类名:StaticInner$InnerClass */ public static class InnerClass{ //静态内部类可以声明静态的成员变量,其他的内部类不可以 private static int b = 1; public void execute(){ //静态内部类只能访问静态程序 System.out.println(a + b); } } }
main方法中使用:
public static void main(String[] args) { //创建静态内部类 StaticInner.InnerClass innerClass = new StaticInner.InnerClass(); innerClass.execute(); }
2、成员内部类(member inner classes):
成员内部类可以访问外部类的静态与非静态的方法和成员变量。
生成成员内部类对象的方法:
OuterClass.InnerClass inner = new OuterClass().new InnerClass();
在局部内部类中访问外部类的成员变量的方法:
OuterClass.this.a;
2.1、相关使用例子:
成员内部类:
class MemberInner{ private int a = 1; public void execute(){ //在外部类中创建成员内部类 InnerClass innerClass = this.new InnerClass(); } /** * 成员内部类 */ public class InnerClass{ //内部类可以创建与外部类同名的成员变量 private int a = 2; public void execute(){ //this引用的是内部类 System.out.println(this.a); //在内部了中使用外部类的成员变量的方法 System.out.println(MemberInner.this.a); } } }
在main方法中使用:
public static void main(String[] args) { //创建成员内部类 MemberInner.InnerClass innerClass = new MemberInner().new InnerClass(); innerClass.execute(); }
3、局部内部类(local inner classes):
类似于局部变量,不能定义为public,protected,private或者static类型。
定义方法中,只能方法中声明为final类型的变量。
3.1、相关使用例子:
局部内部类:
class LocalInner{ public void execute(){ final int a = 1; /** * 创建局部内部类 */ class InnerClass{ public void execute(){ System.out.println("LocalInner Class"); //局部内部类只能访问final类型的变量 System.out.println(a); } } //只能在所在方法区域创建 new InnerClass().execute(); } }
在main方法中使用:
public static void main(String[] args) { //外部不能直接创建局部内部类 LocalInner localInner = new LocalInner(); localInner.execute(); }
4、匿名内部类(anonymous inner classes):
匿名内部类没有类名,没有class关键字也没有extends和implements等关键字修饰。
匿名内部类会隐式地继承一个父类或实现一个接口。
4.1、相关使用例子:
public static void main(String[] args) { AnonymousInnerClassTest test = new AnonymousInnerClassTest(); /** * 创建匿名内部类 * 生成的类名:AnonymousInnerClassTest$1 */ test.print(new Date(){ //重写toString()方法 @Override public String toString() { return "Hello world."; } }); JButton button = new JButton(); /** * 创建匿名内部类 * 该匿名内部类实现ActionListener接口 * 生成的类名:AnonymousInnerClassTest$1 */ button.addActionListener(new ActionListener(){ //实现接口中的方法 @Override public void actionPerformed(ActionEvent e) { System.out.println("使用匿名内部类实现ActionListener接口"); } }); } public void print(Date date){ System.out.println(date); }
相关推荐
- 不同类型的内部类(静态内部类、成员内部类、局部内部类和匿名内部类)的区别和用法 - 内部类的优缺点以及使用场景 这些目标将帮助你理解和掌握内部类的概念,并能够在适当的时候使用内部类来解决问题...
内部类可以分为四种类型:静态内部类、成员内部类(非静态内部类)、局部内部类和匿名内部类。 1. **静态内部类**: 静态内部类与普通的成员内部类不同,它不持有对外部类的引用。因此,可以像其他静态成员一样,...
本篇文章将深入探讨Java中的四种内部类:实例内部类、局部内部类、匿名类和静态内部类,并通过实例代码进行详细解析。 1. **实例内部类**:这是最常见的内部类形式,它在外部类的实例方法或成员位置定义。实例内部...
内部类分为几种类型,包括成员内部类、局部内部类、匿名内部类以及方法参数内部类。 1. **成员内部类**:成员内部类就像是外部类的一个普通成员,可以是静态或非静态的。非静态内部类拥有对外部类的引用,可以直接...
本文详细介绍了 Java 中内部类的各种类型及其使用场景,包括静态内部类、非静态内部类、局部内部类以及匿名内部类。每种类型的内部类都有其独特的特性和应用场景,理解这些差异对于更高效地利用 Java 语言特性至关...
- 匿名内部类不能包含静态成员(除了final static变量)。 - 匿名内部类不能有构造器,但可以通过初始化块来传递参数。 学习“Java4Android 35_内部类和匿名内部类”这个教程,开发者将掌握如何有效地利用内部类和...
内部类可以分为四类:成员内部类、局部内部类、匿名内部类和静态内部类。在这里,我们重点关注成员内部类和静态内部类。 成员内部类,就像它的名字一样,是类的一个成员,与字段和方法处于同一级别。它可以访问外部...
- **非静态成员**:匿名内部类拥有对外部类的隐式引用,可以访问外部类的非静态成员,但必须通过`OuterClass.this`来明确指出。 3. **局部变量的final限制** 如果匿名内部类需要访问局部变量,那么这个局部变量...
内部类分为四种类型:成员内部类、局部内部类、匿名内部类和静态嵌套类。其中,静态嵌套类是与外部类关联但不持有对外部类的引用,因此它可以像普通类一样被静态引用,而无需外部类实例。 Java的静态嵌套类通常用于...
本文将详细探讨内部类、匿名内部类以及内部接口的对比和使用。 首先,让我们了解一下内部类的基本概念。内部类定义在其他类的内部,编译后会生成两个独立的类文件。内部类能够自由地访问外部类的所有成员,包括私有...
在使用匿名内部类时,要记住以下几个原则:匿名内部类不能有构造方法、匿名内部类不能是public、protected、private、static、只能创建匿名内部类的一个实例、匿名内部类不能定义任何静态成员、静态方法、一个匿名...
- **访问权限**:匿名内部类可以访问其所在的作用域,但不能访问局部变量,除非该变量是`final`的。 通过理解这些核心概念和示例,你将能够更好地掌握匿名内部类的用法,并在实际编程中灵活运用。记住,实践是检验...
Java 内部类总结 Java 内部类是指在一个外部类的内部再定义一个...* 匿名内部类可以访问外部类的所有成员 在 Java 中,内部类是一种非常重要的编程技术,它可以帮助我们更好地组织代码,提高代码的可读性和可维护性。
局部内部类和匿名内部类是Java中的一种特性,它们允许我们在方法内部定义类。然而,一个重要的限制是,这些内部类只能访问在其作用域内的final或者实际上等效于final的局部变量。这是因为内部类可能在外部方法结束后...
内部类分为成员内部类、局部内部类和匿名内部类。成员内部类就像是外部类的一个成员变量,可以在外部类的任何地方使用;局部内部类则定义在方法或代码块内,其作用域仅限于该方法或代码块。例如: ```java public ...
内部类分为四类:非静态成员内部类、静态成员内部类、局部内部类和匿名内部类。接下来将逐一介绍这四种类型的内部类。 #### 二、非静态成员内部类 非静态成员内部类是最常见的一种内部类形式,它具有以下特点: 1...
内部类可以分为非静态内部类、局部内部类、静态内部类和匿名内部类四种。 非静态内部类是指定义在另一个类的非静态成员中的类。非静态内部类可以访问外部类的成员变量和成员方法,同时也可以被外部类访问。在外部类...
静态内部类与普通类的行为相似,但能直接访问外部类的静态成员,而非静态内部类则可以访问外部类的所有成员,包括实例变量和方法。非静态内部类在创建时会隐式持有对外部类实例的引用,因此需要外部类的实例来实例化...
内部类分为四种类型:成员内部类、局部内部类、匿名内部类和静态内部类。成员内部类就像是一个类的成员,它可以直接访问外部类的所有成员,包括私有成员。局部内部类定义在方法或作用域内,它的生命周期仅限于该方法...
根据不同的应用场景和特性,内部类可以分为多种类型:成员内部类、局部内部类、静态内部类、匿名内部类。下面将详细介绍每种类型的内部类及其特点和使用方法。 #### 成员内部类 成员内部类(也称为非静态内部类)...