2 q857602833 q857602833 于 2017.01.06 17:53 提问

匿名内部类继承类的同时可以实现接口吗?

一个匿名内部类一定是继承一个类或者实现一个接口,new了这个父类或接口名的内部类还带内容,我就想问能不能还能不能继承其他类或实现其他接口。
如果我表达不好,不好理解, 那问题简化就是
匿名内部类能不能实现多个接口??

7个回答

baluzju
baluzju   2017.01.06 20:37
已采纳

图片说明

q857602833
q857602833 原来API里面有解释啊~!谢谢哦 ,亏我想了那么久
一年多之前 回复
qq_36074751
qq_36074751   2017.01.06 18:25

虽然没太明白你要干嘛,但应该是这样的吧

public class Test {

public static void main(String[] args){
    fun(new A(){
        @Override
        void a(){
            System.out.println("a");
        }

        @Override
        public void b() {
            System.out.println("b");
        }
    });
}

public static void fun(A a){
    a.a();
    a.b();
};

}

/**

  • 匿名抽象类 */ abstract class A implements B{ abstract void a(); }

/**

  • 实现的接口 */ interface B { void b(); } ```

m0_37271578
m0_37271578   2017.01.06 19:04

图片说明你说的是这样吧 可以的

shouzhongderiluo
shouzhongderiluo   2017.01.07 11:14

纠正一下,内部类和匿名内部类是不同的两个概念,内部类可以继承其它类的同时实现接口,但是匿名内部类不可以,既不能继承也不能实现

q857602833
q857602833 匿名只有你看懂了问题,但是为什么匿名内部类不能再继承和实现呢?因为它没有构造函数吗?
一年多之前 回复
qq_36074751
qq_36074751   2017.01.06 18:25

public class Test {

public static void main(String[] args){
    fun(new A(){
        @Override
        void a(){
            System.out.println("a");
        }

        @Override
        public void b() {
            System.out.println("b");
        }
    });
}

public static void fun(A a){
    a.a();
    a.b();
};

}

/**

  • 匿名抽象类 */ abstract class A implements B{ abstract void a(); }

/**

  • 实现的接口 */ interface B { void b(); }

abl0430
abl0430   2017.01.07 02:41

初学还是把 集合 IO流 线程 这几个关键的做项目常用的东西掌握

dengminghli
dengminghli   2017.01.08 12:03

首先,分清一下情况。内部类共有四种类别,其中局部内部类,静态内部类以及普通内部类都可以实现继承一个类的同时实现一个接口
但匿名内部类比较独特,单纯从语法解析上而言就已经不具备两者同时存在的可能。

演示如下:
创建一个TestInterface接口:

图片说明

创建一个TestParentClass类作为父类型:

图片说明

创建一个TestClass类作为测试主体:

图片说明

q857602833
q857602833 非常感谢
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
匿名内部类 是否可以继承其它类,是否可以实现接口?
匿名内部类: 可以继承其他类,但不能用extends。 可以实现某接口,但不能用implements。匿名内部类,就是没有名字的内部类。故没有构造器,必须调用基类的构造器。所以是继承基类的。匿名内部类经常被用来覆盖基类的某些方法:class A{ public void a(){ System.out.orintln("甲"); } public void
匿名内部类是否可以继承其它类?是否可以实现接口? 代码讲解
匿名内部类也就是没有名字的内部类 正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写 但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口 实例1:不使用匿名内部类来实现抽象方法 abstract class Person { public abstract void eat(); } class Child extends Person
匿名内部类 是否可以继承其它类,是否可以实现接口
Inner Class(内部类)定义在类中的类。 Nested Class(嵌套类)是静态(static)内部类。1. 要创建嵌套类的对象,并不需要其外围类的对象。 2. 不能从嵌套类的对象中访问非静态的外围类对象。 Anonymous Inner Class (匿名内部类)匿名的内部类是没有名字的内部类。 匿名的内部类不能extends(继承)其它类,但一个内部类可以作为一个接口,由另一个
Anonymous Inner Class(匿名内部类)是否可以继承其它类?是否可以实现接口?【Java面试题】
回答:匿名内部类在实现时必须借助一个借口或者一个抽象类或者一个普通类来构造,从这过层次上讲匿名内部类是实现了接口或者继承了类,但是不能通过extends或implement关键词来继承类或实现接口。 匿名内部类即没有名字的内部类。当我们只需要用某一个类一次时,且该类从意义上需要实现某个类或某个接口,这个特殊的扩展类就以匿名内部类来展现。 一般的用途: 1、覆盖某个超类的方法,并且该扩
利用匿名内部类实现Java接口方法
<br /> 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
c#,一个类可以同时继承自一个普通类和一个接口
一个类,可以继承自一个普通类,继承它的成员变量和方法;也可同时继承自 一个接口,继承接口的方法并完成定义。有一个神奇的魔法:同一种对象,都是IAct对象,调用同一种方法Act() 。但是执行的情况却完全不一样。要注意的是,一个接口类对象,只能执行接口里的方法,即使返给它的是子类的对象。只要它的type是接口类,那么,它就只能执行接口里的方法。
java线程深度解析(一)——java new 接口?匿名内部类给你答案
一、内部类 1、内部类初识 一般,一个类里主要包含类的方法和属性,但在java中还提出在类中继续定义类(内部类)的概念。 内部类的定义:类的内部定义类 先来看一个实例 public class Out { private int a=1; //定义内部类 class Inner { private int a=12; public void show() {
匿名内部类如何同时调用多个方法
在这里有关匿名内部类的知识就不再赘述了,主要分享一种用法给大家。 匿名内部类如何同时调用多个方法前几天看Java学习视频的时候,讲到匿名内部类说只可以一次调用一种方法;要调用另一种方法,只能重新再建一个匿名内部类,这样是十分浪费内存的。那么我就在想,可不可以使用匿名内部类同时调用多个方法呢。 废话不多说,上代码! public class Test { public static void
基于接口实现匿名内部类的注意事项
首先,先看基于接口实现匿名内部类的格式: new ()  { }; 注意:1、new操作符后面跟的是接口名,表明上是创建接口对象,实际上是创建了实现此接口的匿名内部类对象。             2、因为匿名内部类没有名称,无法被继承,也不能使抽象类,因此在类中必须实现接口中的所有方法。 我们看一下实例代码: packa
匿名内部类实现Comparator接口,没有重写所有方法,为何不报错
实现接口的方法:类实现:重写接口所有方法 抽象子类:抽象子类继承接口 有朋友问:你的匿名对象实现接口怎么实现的?怎么还能直接new接口呢? 答:匿名对象类实现接口使用了简化写法,在使用匿名内部类时会自动创建一个实现类,其实你不是new了那 个接口,你是new了那个实现类! 问:你的重写方法怎么没有全部重写接口的 还记的上面那个临时创建的实现类吗,他全部重写了接口方法,只是方法体是空的。我虽然只重写了部