使用匿名内部类课使代码更加简洁、紧凑,模块化程度更高。内部类能够访问外部内的一切成员变量和方法,包括私有的,而实现接口或继承类做不到。然而这个不是我说的重点,我说的很简单,就是匿名内部类的两种实现方式:第一种,继承一个类,重写其方法;第二种,实现一个接口(可以是多个),实现其方法。下面通过代码来说明:
package com.bijian.study; public class TestAnonymousInterClass{ public static void main(String args[]){ TestAnonymousInterClass test=new TestAnonymousInterClass(); test.show(); } //在这个方法中构造了一个匿名内部类 private void show(){ Out anonyInter=new Out(){// 获取匿名内部类实例 void show(){//重写父类的方法 System.out.println("this is Anonymous InterClass showing."); } }; anonyInter.show();// 调用其方法 } } // 这是一个已经存在的类,匿名内部类通过重写其方法,将会获得另外的实现 class Out{ void show(){ System.out.println("this is Out showing."); } }
运行结果:
this is Anonymous InterClass showing.
所以在这里看出,匿名内部类有了自己的实现。其实很简单,使用匿名内部类是因为我这地方需要有点什么特殊的实现,所以我就在这地方把具体实现也给了出来了。然后我就在这地方获取它的实例,调用它的方法。
接口的方式,只要把父类换成接口就行了,如下所示。
package com.bijian.study; public class TestAnonymousInterClass02 { public static void main(String args[]){ TestAnonymousInterClass02 test=new TestAnonymousInterClass02(); test.show(); } //在这个方法中构造了一个匿名内部类 private void show(){ Out anonyInter=new Out(){// 获取匿名内部类实例 public void show(){//重写父类的方法 System.out.println("this is Anonymous InterClass showing."); } }; anonyInter.show();// 调用其方法 } } // 这是一个已经存在的类,匿名内部类通过重写其方法,将会获得另外的实现 interface Out{ void show(); }
运行结果:
this is Anonymous InterClass showing.
使用匿名内部类时我们不要忘了我们的目的,我们只是在这地方想对某个类有特殊的实现。而不要想得太多,在匿名内部编写其它的方法。在匿名内部类中编写的自己的方法是不可见的。此种做法是毫无意义的,当然一般也不会这么做。在这里只是告诉初学者对于匿名内部类不要想的太多,而要这么想:匿名内部类就是重写父类或接口的方法。
匿名内部类是没有名字的,所以我们没办法获得其类型,而只能把它当作超类或接口类型来使用。
PS:利用匿名内部类实现Java接口方法实例
package com.bijian.study; interface I1 { void test(); } interface I2 { void test(); } class Class1 { public I1 toI1() { return new I1() { public void test() { System.out.println("I1 test..."); } }; } public I2 toI2() { return new I2() { public void test() { System.out.println("I2 test..."); } }; } } public class InnerClassDemo { public static void main(String[] args) { Class1 o = new Class1(); I1 i1 = o.toI1(); I2 i2 = o.toI2(); i1.test(); i2.test(); } }
运行结果:
I1 test... I2 test...
相关推荐
Java 1.1 引入了内部类和匿名类,这两种特性极大地增强了代码的灵活性和可读性。内部类是指定义在另一个类内部的类,它可以是静态的或非静态的,根据其是否需要访问外部类的实例成员来区分。静态内部类与普通类的...
事件监听器的实现方式有多种,本篇文章将介绍四种常见的事件监听器实现方式:自身类作为事件监听器、外部类作为事件监听器、匿名内部类作为事件监听器和内部类作为事件监听器。 1. 自身类作为事件监听器 在这个...
Java匿名类是Java编程语言中的一种特殊的类,它没有明确的类名。匿名类经常被用在Java GUI程序设计中,例如在Swing库中,以便快速地创建GUI组件。然而,很多Java学习者对匿名类的理解不够深入,认为匿名类只是一个...
总结一下,Java中的匿名内部类提供了一种简洁的方式来实现接口或扩展已有类,常用于事件处理、回调函数以及在特定场景下替代新的类定义。同时,了解Java Web开发中的Cookie、Session、localStorage和sessionStorage...
匿名类创建对象的方式主要有两种: 1. **匿名内部类**: 当你需要创建一个类的对象,而这个类只用到一次时,可以使用匿名内部类。例如,在创建`Thread`对象时,可以直接在new操作符后定义一个匿名的子类,重写其`...
在Java编程语言中,内部类和匿名内部类是两种特殊类型的类,它们为代码的组织和功能实现提供了独特的灵活性。本教程"Java4Android 35_内部类和匿名内部类"深入探讨了这两个概念,旨在帮助开发者更好地理解和运用它们...
此外,匿名类的概念在Java中用于简化代码结构,尤其是在实现接口时。 1. **List接口** List接口继承自Set接口,它不仅提供了基本的添加、删除、查找元素的方法,还保证了元素的有序性。主要方法包括: - `add(E e...
### Java特别篇-匿名对象与匿名内部类 #### 一、匿名对象 在Java中,对象通常通过定义一个变量来引用。例如,在`Student`类的例子中,我们首先定义了...理解和掌握这两种概念,对于提高Java编程技巧是非常有帮助的。
例如,`Thread t = new Thread() {...}` 和 `Runnable r = new Runnable() {...}` 分别展示了两种方式的匿名内部类实现。`run()` 方法在这里是线程执行的核心,可以包含任何需要在新线程中运行的代码。 4. **匿名...
在Java编程语言中,匿名类是一种特殊的类,它没有名称,通常用于一次性、临时性的对象创建,尤其是在需要实现一个接口或继承一个类时,而无需为这个实现单独定义一个新的类。在给定的实例代码中,我们将看到如何通过...
Java中的内部类和匿名类是Java语言的一个特色特性,它们为程序员提供了更加灵活和强大的代码组织方式。内部类,也称为嵌套类,可以分为两种类型:静态内部类和非静态内部类。非静态内部类与外部类之间存在紧密的关联...
在Java编程语言中,内部类和匿名类是两种特殊的类定义方式,它们为代码提供了更高的灵活性和封装性。本文将详细讲解这两种类的概念、特点以及实际应用。 首先,我们来看内部类。内部类分为四种类型:成员内部类、...
在Java编程语言中,接口(Interface)是一种非常重要的概念,它是类型定义的一种方式,用于规范类的行为。本文将深入探讨Java接口的使用方法,帮助你理解其核心特性、作用以及如何在实际编程中灵活运用。 1. **接口...
在标题“发两个匿名内部类使用的例子”中,我们将会探讨两种不同的场景,如何利用匿名内部类来解决问题。这篇博客文章的链接虽然没有提供具体内容,但我们可以根据主题来深入讲解匿名内部类的基本概念、用途及其优势...
嵌套类有两种类型:静态嵌套类和非静态嵌套类。静态嵌套类使用很少,非静态嵌套类也即被称作为内部类(inner)。嵌套类从 JDK1.1 开始引入。 一、嵌套类的概念 嵌套类是指在一个类的内部定义另一个类。这种类可以...
Java中实现多线程的两种常见方式是: 1. **继承Thread类** - **步骤**: 1. 定义一个类继承自`Thread`。 2. 重写`run()`方法,编写线程体代码。 3. 创建该类的实例,并调用`start()`方法启动线程。 - **示例...
本讲义将深入探讨Java中的匿名内部类与适配器模式,这两种概念在实际开发中都有着广泛的用途。 首先,让我们了解一下匿名内部类。匿名内部类,顾名思义,就是没有名字的类,它可以在需要使用类的地方直接定义,无需...