当前位置:  开发笔记 > 编程语言 > 正文

在实现具有抽象类的接口时声明什么(不)?

如何解决《在实现具有抽象类的接口时声明什么(不)?》经验,为你挑选了1个好方法。

我有一个接口A,我必须提供一些不同的实现.但是,这些实现共享一些辅助方法,因此我将这些方法移动到抽象基类.

Interface A {
    void doX();
}

abstract Class B implements A {
    protected void commonY() {
        // ...
    }

    @Override
    public abstract void doX();
}

Class C extends B {
    @Override
    public void doX() {
        // ...
    }
}

Class D extends B {
    @Override
    public void doX() {
        // ...
    }
}

我的代码按预期工作,但我有几个问题:

我应该在B类中声明抽象方法doX()吗?为什么不)?

我是否还应该在C类和D类上明确声明"实现A"?为什么不)?

kgiannakakis.. 8

我认为最好这样做如下:

Interface A {
        void doX();
}

abstract Class B {
        protected void commonY() {
                // ...
        }
}

Class C extends B implements A{

        public void doX() {
                // ...
        }
}

Class D extends B implements A{

        public void doX() {
                // ...
        }
}

您不应该将接口(方法的签名)与实现混合在一起.



1> kgiannakakis..:

我认为最好这样做如下:

Interface A {
        void doX();
}

abstract Class B {
        protected void commonY() {
                // ...
        }
}

Class C extends B implements A{

        public void doX() {
                // ...
        }
}

Class D extends B implements A{

        public void doX() {
                // ...
        }
}

您不应该将接口(方法的签名)与实现混合在一起.

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有