2 q857602833 q857602833 于 2017.01.06 17:53 提问

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

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

7个回答

baluzju
baluzju   2017.01.06 20:37
已采纳

图片说明

q857602833
q857602833 原来API里面有解释啊~!谢谢哦 ,亏我想了那么久
11 个月之前 回复
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(); } ```

shouzhongderiluo
shouzhongderiluo   2017.01.07 11:14

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

q857602833
q857602833 匿名只有你看懂了问题,但是为什么匿名内部类不能再继承和实现呢?因为它没有构造函数吗?
11 个月之前 回复
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

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

abl0430
abl0430   2017.01.07 02:41

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

dengminghli
dengminghli   2017.01.08 12:03

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

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

图片说明

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

图片说明

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

图片说明

q857602833
q857602833 非常感谢
11 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!