2016-06-30 125 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