`

匿名内部类是否可以继承其它类,是否可以以implements实现接口?

阅读更多
在网上搜到有两种解释
1.可以继承其他类或完成其他接口,在swing编程中常用此方式。
2.匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现。

内部类的用法几乎等同于一般类,只是使用外部类变量的时候需要将外部类变量设置为final.因为内部类使用外部变量时,仅仅使用的是他的一个副本,所以说,即便内部类使用的变量更改了,在外部类中也不会有变化,这也是sun为了提醒程序员的一种方法...
同样的,匿名内部类也可以继承或实现一类或方法,用法为:
JButton btn = new JButton("click");
btn.addActionListener(new ActionListener()
{
    public void actionPerformed(ActionEvent e){//some mothod...}
});
内部类除了实现一个接口也可以继承一个类,语法都是同上述的"new ActionListener()",(你也可以去继承一个适配器类,为了万无一失,我刚还专门测试了一下)
之所以swing用的内部类比较多,是因为他需要用到注册监听器机制,而该监听类如果只服务于一个组件,那么,将该类设置成内部类/匿名类是最方便的.

匿名内部类实际上已经extends了一个父类了,一个类只能extends一个父类,
例:private void test(){
//匿名内部类,OutClass实例
new OutClass(){
//override something
}
}
等价于:

class InnerClass extends OutClass{
//override something
}

OutClass oc = new InnerClass();
分享到:
评论

相关推荐

    Java面试题,他会给你很好的Java面试准备,第一,谈谈final, finally, finalize的区别,第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?

    不能extends(继承)其它类,但一个内部类可以作为一个接口,由另一个内部类实现。 在Java中,还有Static Nested Class和Inner Class的概念。Static Nested Class意味着创建一个static内部类的对象,不需要一个外部...

    实现接口的匿名类

    3. **接口实现**:一个类可以实现一个或多个接口,通过关键字`implements`来声明,并提供接口中所有方法的具体实现。 4. **匿名类实现接口**:在创建对象时直接实现接口,不需要声明单独的类,常用于内部类和回调...

    匿名内部类_Anoymous_Inner_

    匿名内部类是Java编程语言中一个独特而强大的特性,它允许开发者在不定义单独类的情况下实现接口或继承抽象类。这种类没有名称,通常用于快速实现特定功能或回调机制,尤其是在处理事件监听器时非常常见。匿名内部类...

    接口--内部类--多继承

    内部类分为四种类型:成员内部类、局部内部类、匿名内部类和静态内部类。其中,成员内部类可以像普通成员一样在类的任何地方声明,而局部内部类只能在方法或代码块中定义。内部类的使用增强了代码的封装性,使得某些...

    Java接口和内部类教程

    匿名内部类是通过继承现有类或实现现有接口来创建的,但不显式定义类名。 ##### 3.2.4 静态内部类 静态内部类类似于成员内部类,但是它是静态的,因此不需要依赖于外部类的实例就可以访问静态内部类的对象。 总结...

    java接口与内部类

    - 匿名内部类:没有名字的内部类,通常用于实现接口或继承类时立即使用。 - **内部类的使用环境**: - 当需要创建与外部类紧密相关的类时。 - 当需要访问外部类的私有成员时。 - 当需要减少代码冗余时,例如多个...

    抽象类、接口、内部类、异常

    类通过`implements`关键字来实现接口,实现接口的类必须提供接口中所有方法的具体实现。 【内部类】 内部类是Java中的一种特性,它定义在另一个类的内部。根据其位置,内部类可以分为成员内部类、局部内部类、匿名...

    第讲-接口与内部类优秀文档.ppt

    1. **匿名内部类**:没有名称的内部类,通常用于一次性实现某个接口或继承某个类的简单情况。 2. **非静态内部类(成员内部类)**:是外部类的成员,可以访问外部类的私有成员,依赖于外部类的对象存在。 3. **静态...

    03-java接口与内部类1

    匿名内部类没有名字,通常用于一次性创建的对象,可以用来快速实现接口或父类的简单功能。 3.4 静态内部类 静态内部类如同静态成员,不依赖于外部类的实例,可以独立存在,但仍然能访问外部类的静态成员。 总结来...

    第五章_Java类的继承、包及接口

    接口强调多态性,使得不同类可以实现相同的接口,从而具有相同的行为。这在设计大型系统时非常有用,因为接口定义了协作组件之间的契约。 内部类(Inner Class)是Java允许在另一个类的定义内部定义的类,它可以是...

    Java内部类总结

    内部类还可以实现接口或者继承其他类。在实现接口时,内部类可以访问外部类的所有成员。例如: ```java interface oo { int k = 10; void pt(); } class me { class kk implements oo { oo testMed() { final ...

    java接口的不同使用

    - 一个类可以实现多个接口,从而实现多继承的效果。 - Java 8引入了默认方法(default methods),它允许接口提供默认的实现,增强了接口的功能。 2. **接口的实现** - 类通过关键字`implements`来实现接口,...

    java 内部类的实例详解

    虽然Java不支持类的多重继承,但内部类可以实现这一目标,因为每个内部类都可以独立继承一个接口或类。这在处理特定的编程问题时非常有用,尤其是在接口不能完全满足需求的情况下。 例如,假设我们有两个接口Father...

    内部类示例

    3. 匿名内部类:没有名字的内部类称为匿名内部类,通常用于简化接口实现或抽象类的子类化。它们通常用于一次性使用的场合。 ```java Button button = new Button() { @Override public void onClick() { System....

    Java 接口

    类可以实现一个或多个接口,以表明它支持接口中定义的所有行为。实现接口时,需要在类声明中使用`implements`关键字,并提供接口中所有抽象方法的实现。例如: ```java public class MyClass implements MyInterface...

    java基础知识学习教程-7面向对象.pptx

    成员内部类可以直接使用外部类的所有属性和方法,静态内部类不依赖于外部类,局部内部类的实例化只能在方法中进行,匿名内部类一般用于继承其它类或是实现接口。 Lambda表达式是JDK 1.8后开始的新特性,允许把函数...

    Java程序设计:020613_内部类.ppt

    匿名内部类是没有名字的内部类,常用于简短的、一次性使用的代码块,通常用来实现接口或继承类。当只需要一个类实例来实现某个接口或父类的简单功能时,匿名内部类可以提供简洁的代码。例如,实现一个简单的事件监听...

    继承多态重载与接口PPT学习教案.pptx

    接口可以多继承,一个类可以实现多个接口,从而实现多重多态。接口通过`implements`关键字实现,用于定义类的行为。 ```java interface MyInterface { void myMethod(); } class MyClass implements MyInterface ...

    java 接口 java 接口java 接口

    2. 类可以继承单个类,但可以实现多个接口。这实现了多重继承的效果。 3. 类的访问修饰符可以是private、default、protected或public,而接口的所有成员默认都是public。 4. 接口中定义的抽象方法默认为public ...

Global site tag (gtag.js) - Google Analytics