2016-06-30 210 views
-4

我有问题,或多或少是技术问题。我想要执行以下操作:扩展类中的接口

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

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

我想找到一种方法来在'NamedRunnable'类本身内部明确地实现run方法,但是它将在所有将继承这个类的成员中实现。

是这样的可能吗?

+1

我不清楚你想实现什么:你想要一个构造器,它需要一个Runnable并且运行方法来运行这个Runnable? –

+2

你能告诉我们psuedo-code,我真的不明白你想要什么 – niceman

+0

你想要这个吗? public class NamedRunnable implements Runnable {.. public void run(){}} – aksappy

回答

0

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

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

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

感谢您的回复,但正如原始问题中提到的,这是我想要避免的。相反,我将新类定义为抽象类,并将每个类都划分为子类,并实现run方法。 – Aris

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实现,并且可以被实例化。

+1

你甚至不需要在NamedRunnable中定义运行,因为它是隐含的 –

+0

@NicolasFilotto:好点。 –

+0

我的意思是发布一个答案,就像我在看到实际响应之前所做的一样,但是在我的抽象类中声明方法run()为抽象方法的细微差别。 – Aris