抽象类可以实现接口吗?有什么意义?

代码

接口A

public interface A {
    void a();
    void b();
    void c();
    void d();
}

实现接口A的抽象类B

public abstract class B implements A {

    @Override
    public void a() {
        System.out.println("抽象类实现a方法");
    }

    @Override
    public void b() {
        System.out.println("抽象类实现b方法");
    }
}

继承抽象类B的子类C

public class C extends B {
    @Override
    public void c() {
        System.out.println("子类实现c方法");
    }

    @Override
    public void d() {
        System.out.println("子类实现d方法");
    }

    @Override
    public void a() {
        System.out.println("子类重写抽象类a方法");
    }
}

抽象类是不能被实例化的,所以没有要求实现所有的方法。但是没写出的方法还是隐式的存在的。所以当抽象类实现接口的某些方法,子类继承该抽象类时,需要实现抽象类未实现的方法。

以下结论来自论坛

1.抽象类肯定可以实现接口;
2.这不是有没有意义的事情,是一种思想,当你自己写的类想用接口中个别方法的时候(注意不是所有的方法),那么你就可以用一个抽象类先实现这个接口(方法体中为空),然后再用你的类继承这个抽象类,这样就可以达到你的目的了,如果你直接用类实现接口,那是所有方法都必须实现的;
3.这种思想在java.swing.event包中运用的非常多,里面一般以Adapter为后缀的都是抽象类,它们都实现了特定的事件接口,大家可以看看。

参考
抽象类可以实现接口吗?
抽象类实现接口有什么意义?

发布了13 篇原创文章 · 获赞 2 · 访问量 1110

猜你喜欢

转载自blog.csdn.net/AneTist/article/details/103306193