copy http://blog.csdn.net/cntanghai/article/details/6094481
使用匿名内部类课使代码更加简洁、紧凑,模块化程度更高。内部类能够访问外部内的一切成员变量和方法,包括私有的,而实现接口或继承类做不到。然而这个不是我说的重点,我说的很简单,就是匿名内部类的两种实现方式:第一种,继承一个类,重写其方法;第二种,实现一个接口(可以是多个),实现其方法。下面通过代码来说明:
package com;
public class TestAnonymousInterClass {
public static void main(String args[]) {
TestAnonymousInterClass test = new TestAnonymousInterClass();
test.show();
}
// 在这个方法中构造了一个匿名内部类
private void show() {
Out anonyInter = new Out() {// 获取匿名内部类实例
@Override
void show() {// 重写父类的方法
System.out.println("this is Anonymous InterClass showing.");
}
};
anonyInter.show();// 调用其方法
Out out = new Out();
out.show();// 调用其方法
}
}
// 这是一个已经存在的类,匿名内部类通过重写其方法,将会获得另外的实现
class Out {
void show() {
System.out.println("this is Out showing.");
}
}
程序运行的输出结果为:
this is Anonymous InterClass showing.
所以在这里看出,匿名内部类有了自己的实现。其实很简单,使用匿名内部类是因为我这地方需要有点什么特殊的实现,所以我就在这地方把具体实现也给了出来了。然后我就在这地方获取它的实例,调用它的方法。
接口的方式,只要把父类换成接口就行了,没必要给出代码了。
使用匿名内部类时我们不要忘了我们的目的,我们只是在这地方想对某个类有特殊的实现。而不要想得太多,在匿名内部编写其它的方法。在匿名内部类中编写的自己的方法是不可见的。此种做法是毫无意义的,当然一般也不会这么做。在这里只是告诉初学者对于匿名内部类不要想的太多,而要这么想:
匿名内部类就是重写父类或接口的方法。
匿名内部类是没有名字的,所以我们没办法获得其类型,而只能把它当作超类或接口类型来使用。
分享到:
相关推荐
匿名内部类可以重写父类的方法,也可以继承父类的方法。 匿名内部类的应用场景 匿名内部类广泛应用于Java开发中,例如: * 实现接口中的方法 * 创建Event处理器 * 创建Thread对象 * 实现数据结构中的节点类 结论...
这种情况下,匿名内部类继承自某个类,并且通常会重写父类的方法。例如,我们可能会创建一个继承自`Car`类的匿名子类,重写其某些行为。 2. 接口式的匿名内部类: 这种情况中,匿名内部类实现了一个接口。例如,...
匿名内部类是内部类的一种特殊形式,它没有类名,常用于一次性创建的对象,特别是在需要实现一个接口或继承一个类,但又不需要额外的方法时。例如,事件监听器的回调函数常常使用匿名内部类来实现。 2. **匿名内部...
在Java中,匿名内部类是没有名字的类,它可以直接继承一个类或实现一个接口。在Android中,由于大部分事件处理都是基于接口实现的,如OnClickListener、OnCheckedChangeListener等,因此我们通常会用匿名内部类来...
然后在`main`方法中,我们创建了一个匿名内部类,这个类实现了`FlyAble`接口,并重写了`fly()`方法。通过这种方式,我们可以在一行代码内完成接口实现和对象创建,简化了调用过程。 匿名内部类的定义语法如下: ``...
// 可以在这里添加额外的方法或重写父类的方法 }; p.sayHello(); // 调用sayHello方法 } } ``` 在这个示例中,我们创建了一个继承自`Person`类的匿名内部类,并通过`Person`类型的变量`p`引用它。接着调用了`...
创建匿名内部类时,我们只需在其后跟一个对象实例化,如 `new InterfaceName() { /* 实现接口的方法 */ }` 或 `new SuperClassName() { /* 重写父类的方法 */ }`。 2. **接口实现** 当我们需要临时实现一个接口,...
7. **匿名内部类**:即使没有显式定义子类,也可以通过匿名内部类实现子类对象赋值给父类对象的操作,这在处理接口时非常常见。 8. **多态性**:向上转型是实现多态的基础,使得我们可以使用父类引用处理不同子类...
在示例4中,`AnonymousInnerClassTest`类的`main()`方法创建了一个匿名内部类,该类继承了`Date`类并重写了`toLocaleString()`方法,从而改变了其行为。 匿名内部类使得代码更加简洁,尤其是在处理事件监听时。例如...
内部类可以分为成员内部类、静态内部类、局部内部类和匿名内部类等。 在Java语言程序设计中,抽象类和接口都是用于定义一些重要的方法,但它们之间有所不同。抽象类可以有构造函数,可以有非抽象方法,可以有成员...
内部类是将一个类定义在另一个类内部或一个方法内部的类,包含内部类的类称为外部类,内部类可以分为成员内部类、静态内部类、局部内部类和匿名内部类。成员内部类可以直接使用外部类的所有属性和方法,静态内部类不...
匿名内部类是一种没有名字的类,它可以直接实现某个接口,并且通常用于一次性、简单的任务。例如: ```java button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ...
Java中 == 和 equals 和 hashCode 的区别 int、char、long 各占多少字节数 int 和 Integer 的区别 谈谈对Java多态的理解 ...成员内部类、静态内部类、方法内部类(局部内部类)和匿名内部类的理解,以及项目中的应用
在上面的代码中,`new 父类或接口名称()` 是用于创建匿名内部类的实例,`{}` 中是匿名内部类的类体。 在本文中,我们将通过一个示例代码来详细介绍Java匿名内部类实例代码详解。 首先,我们定义了一个Person类,它...
Java中的匿名内部类是一种特殊的类,它没有名称,通常用于创建一次性的、简短的类实现,尤其是在需要扩展已有类或实现接口时。在上述代码示例中,我们看到匿名内部类与构造函数的交互。 首先,让我们了解匿名内部类...
- 当一个类同时继承了一个接口和一个父类,而父类和接口中存在相同签名的默认方法时,需要在子类中显式覆盖选择哪个方法。 7. **Java 8中的函数式接口** - Java 8引入了函数式接口的概念,这类接口只有一个抽象...
- 匿名内部类:没有名字,通常用于快速实现一个简单的类或接口,常见于事件监听器的定义。 - 成员内部类:作为类的成员,与普通成员变量类似,可以直接访问外部类的成员。 5. **final关键字的作用**: - 修饰类...
- **匿名内部类**:无需为类命名,通常用于快速创建实现特定接口或继承特定类的临时对象。 理解并熟练掌握这些Java特殊类的概念对于编写高效、灵活和可维护的代码至关重要。通过深入学习和实践,开发者可以更好地...
- 匿名内部类:没有类名,常用于快速创建实现特定接口或继承特定类的对象。 - 成员内部类:作为外部类的成员存在,可以直接访问外部类的成员。 5. **final关键字** - final修饰类:禁止其他类继承该类。 - ...
这意味着匿名内部类可以重写其外部类或接口定义的方法。 6. **final与反射**: 反射API中的`Modifier.isFinal()`方法可以用来检查一个类或方法是否声明为final。例如: ```java Modifier.isFinal(anonymous....