我有問題,或多或少是技術問題。我想要執行以下操作:擴展類中的接口
有一個類將定義一個默認構造函數和另一個將創建一個名爲NamedRunnable的新對象的構造函數。
該類將有效地實現Runnable接口,從而包含它提供的運行方法。
我想找到一種方法來在'NamedRunnable'類本身內部明確地實現run方法,但是它將在所有將繼承這個類的成員中實現。
是這樣的可能嗎?
我有問題,或多或少是技術問題。我想要執行以下操作:擴展類中的接口
有一個類將定義一個默認構造函數和另一個將創建一個名爲NamedRunnable的新對象的構造函數。
該類將有效地實現Runnable接口,從而包含它提供的運行方法。
我想找到一種方法來在'NamedRunnable'類本身內部明確地實現run方法,但是它將在所有將繼承這個類的成員中實現。
是這樣的可能嗎?
如果這是你的意思,那麼是有可能:)
public class NamedRunnable implements Runnable {
public NamedRunnable(String name) {
// ....
}
public void run() {
// ...,
}
}
感謝您的回覆,但正如原始問題中提到的,這是我想要避免的。相反,我將新類定義爲抽象類,並將每個類都劃分爲子類,並實現run方法。 – Aris
這聽起來像你想的抽象類(不能被實例化)實現Runnable
:
abstract class NamedRunnable implements Runnable {
private String name;
protected NamedRunnable(String _name) {
this.name = _name;
}
}
請注意,這不會執行run
。 run
是該類含蓄抽象,彷彿你已列入
abstract public void run();
...因爲我們聲明的接口,但沒有實現它(這是我們將不允許做的,如果該類不宣佈爲abtract
)。
你會使用,作爲一個基類的具體類,例如:
class Thingy extends NamedRunnable {
public Thingy(String name) {
super(name);
}
@Override
public void run() {
// ...
}
}
具體類有run
實現,並且可以被實例化。
你甚至不需要在NamedRunnable中定義運行,因爲它是隱含的 –
@NicolasFilotto:好點。 –
我的意思是發佈一個答案,就像我在看到實際響應之前所做的一樣,但是在我的抽象類中聲明方法run()爲抽象方法的細微差別。 – Aris
我不清楚你想實現什麼:你想要一個構造器,它需要一個Runnable並且運行方法來運行這個Runnable? –
你能告訴我們psuedo-code,我真的不明白你想要什麼 – niceman
你想要這個嗎? public class NamedRunnable implements Runnable {.. public void run(){}} – aksappy