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

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

7个回答

图片说明

q857602833
至余 原来API里面有解释啊~!谢谢哦 ,亏我想了那么久
大约 3 年之前 回复

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

q857602833
至余 匿名只有你看懂了问题,但是为什么匿名内部类不能再继承和实现呢?因为它没有构造函数吗?
大约 3 年之前 回复

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(); }

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

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

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

图片说明

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

图片说明

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

图片说明

q857602833
至余 非常感谢
大约 3 年之前 回复

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

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(); } ```

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问