这个兄弟的文章,让我收益匪浅,解决了之前的一个问题,特此收藏
使用匿名内部类课使代码更加简洁、紧凑,模块化程度更高。内部类能够访问外部内的一切成员变量和方法,包括私有的,而实现接口或继承类做不到。然而这个不是我说的重点,我说的很简单,就是匿名内部类的两种实现方式:第一种,继承一个类,重写其方法;第二种,实现一个接口(可以是多个),实现其方法。下面通过代码来说明:
Java代码
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.");
}
}
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.
所以在这里看出,匿名内部类有了自己的实现。其实很简单,使用匿名内部类是因为我这地方需要有点什么特殊的实现,所以我就在这地方把具体实现也给了出来了。然后我就在这地方获取它的实例,调用它的方法。
接口的方式,只要把父类换成接口就行了,没必要给出代码了。
使用匿名内部类时我们不要忘了我们的目的,我们只是在这地方想对某个类有特殊的实现。而不要想得太多,在匿名内部编写其它的方法。在匿名内部类中编写的自己的方法是不可见的。此种做法是毫无意义的,当然一般也不会这么做。在这里只是告诉初学者对于匿名内部类不要想的太多,而要这么想:匿名内部类就是重写父类或接口的方法。
匿名内部类是没有名字的,所以我们没办法获得其类型,而只能把它当作超类或接口类型来使用。
当然,我这篇文章不是很有深度。欢迎发表意见!
分享到:
相关推荐
在Java编程语言中,内部类和匿名内部类是两种特殊类型的类,它们为代码的组织和功能实现提供了独特的灵活性。本教程"Java4Android 35_内部类和匿名内部类"深入探讨了这两个概念,旨在帮助开发者更好地理解和运用它们...
总结一下,Java中的匿名内部类提供了一种简洁的方式来实现接口或扩展已有类,常用于事件处理、回调函数以及在特定场景下替代新的类定义。同时,了解Java Web开发中的Cookie、Session、localStorage和sessionStorage...
在标题“发两个匿名内部类使用的例子”中,我们将会探讨两种不同的场景,如何利用匿名内部类来解决问题。这篇博客文章的链接虽然没有提供具体内容,但我们可以根据主题来深入讲解匿名内部类的基本概念、用途及其优势...
### Java特别篇-匿名对象与匿名内部类 ...而匿名内部类则为我们提供了一种简洁的方式去实现接口或继承类,尤其是在只需要一次性的使用这些类的情况下。理解和掌握这两种概念,对于提高Java编程技巧是非常有帮助的。
Java 1.1 引入了内部类和匿名类,这两种特性极大地增强了代码的灵活性和可读性。内部类是指定义在另一个类内部的类,它可以是静态的或非静态的,根据其是否需要访问外部类的实例成员来区分。静态内部类与普通类的...
本文将深入探讨Java中匿名类的两种主要实现方式:继承一个类和实现一个接口。 首先,让我们来看一下匿名类继承一个类的实现方式。在提供的代码示例中,`TestAnonymousInterClass` 类中的 `show` 方法创建了一个匿名...
总结一下,内部类、匿名内部类和内部接口在Java编程中提供了一种强大的工具,它们可以帮助我们更好地组织代码,实现封装和模块化。在Android开发中,它们常用于事件监听、线程管理、回调函数等场景,增强了代码的...
匿名内部类是指没有名字的内部类,通常用于实现某个接口或继承某个类。 四、在外部类中定义内部类 在外部类中定义内部类可以使得内部类访问外部类的所有成员变量和方法。例如,在上面的代码中,内部类 Inner 可以...
本文将深入探讨Java中的四种内部类:非静态内部类、静态内部类、局部内部类和匿名内部类。 1. 非静态内部类(也称为成员内部类) 非静态内部类是定义在外部类的成员位置的类,它可以访问外部类的所有成员,包括私有...
Java 内部类总结 Java 内部类是指在一个外部类的内部再定义一个类。内部类作为外部类的一个成员,并且...在 Java 中,内部类是一种非常重要的编程技术,它可以帮助我们更好地组织代码,提高代码的可读性和可维护性。
事件监听器的实现方式有多种,本篇文章将介绍四种常见的事件监听器实现方式:自身类作为事件监听器、外部类作为事件监听器、匿名内部类作为事件监听器和内部类作为事件监听器。 1. 自身类作为事件监听器 在这个...
然而,不当使用Handler,尤其是结合匿名内部类或非静态内部类,可能导致内存泄漏和Native内存增加,这对应用性能和稳定性造成负面影响。 首先,我们要理解内存泄漏的概念。内存泄漏是指程序中已分配的内存没有被...
Java中的匿名内部类是一种特殊的类,它没有名称,通常用于创建一次性的、临时的对象,尤其在需要实现一个接口或继承一个类,但只需要一个简单实现的情况下。匿名内部类可以直接访问外部类的所有成员(包括私有成员)...
例如,`Thread t = new Thread() {...}` 和 `Runnable r = new Runnable() {...}` 分别展示了两种方式的匿名内部类实现。`run()` 方法在这里是线程执行的核心,可以包含任何需要在新线程中运行的代码。 4. **匿名...
在Java中,当只需要用一次的类实现某个接口或者继承某个类时,可以使用匿名内部类。例如: ```java Runnable r = new Runnable() { @Override public void run() { // 实现run方法 } }; ``` 这里创建了一个...
在Java编程语言中,内部类和匿名类是两种特殊的类定义方式,它们为代码提供了更高的灵活性和封装性。本文将详细讲解这两种类的概念、特点以及实际应用。 首先,我们来看内部类。内部类分为四种类型:成员内部类、...
在Java中,如果一个类只用到一次,那么定义一个完整的类就显得冗余,匿名内部类提供了一种更为高效的解决方案。 匿名内部类可以作为局部变量、成员变量、方法参数或返回值。当它作为局部变量使用时,必须与一个实例...
- **强大的功能**:内部类可以实现其他编程语言中难以实现的功能,如匿名内部类和局部内部类。 总之,Java内部类为开发者提供了更多灵活性和设计选项,是实现复杂程序结构和高级功能的重要工具。理解并熟练运用...
首先,匿名内部类可以分为两种类型:继承类的匿名内部类和实现接口的匿名内部类。在提供的内容中,主要讨论的是实现接口的匿名内部类。当需要快速实现一个接口的所有方法而不想创建单独的类时,匿名内部类就显得非常...
Java中的内部类是一种强大的特性,它允许在一个类的定义内部定义另一个类。内部类可以作为外部类的一个成员,提供了一种灵活的代码组织方式,并且能够访问外部类的私有成员,这使得内部类在处理封装和继承时具有独特...