扩展类中的接口

时间:2016-06-30 12:42:17

标签: java inheritance interface

我有一个或多或少技术性的问题。我想做以下事情:

有一个类将定义默认构造函数和另一个将创建名为NamedRunnable的新对象的构造函数。

该类将有效地实现Runnable接口,从而包括它提供的run方法。

我想找到一种方法,不在'NamedRunnable'类本身中显式实现run方法,而是在将子类化所述类的所有成员中实现它。

这样的事情可能吗?

2 个答案:

答案 0 :(得分:0)

如果这是你的意思,那么可以:)

public class NamedRunnable implements Runnable {
    public NamedRunnable(String name) {
        // ....
    }

    public void run() {
        // ...,
    }
}

答案 1 :(得分:0)

听起来你想要一个实现Runnable抽象类(无法实例化):

abstract class NamedRunnable implements Runnable {
    private String name;

    protected NamedRunnable(String _name) {
        this.name = _name;
    }
}

请注意,这并未实现runrun在该类中是隐式抽象的,就像你已经包含了

一样
abstract public void run();

...因为我们声明了界面但没有实现它(如果没有声明abtract类,我们就不允许这样做。)

您可以将其用作具体类的基类,例如:

class Thingy extends NamedRunnable {
    public Thingy(String name) {
        super(name);
    }

    @Override
    public void run() {
        // ...
    }
}

具体类具有run实现,并且可以实例化。