Eclipseは、 "Extract Interface"リファクタリングでスーパークラスメソッドを提供しません。そして、これは正しいです、なぜならあなたは本当にインターフェイスを実装し、スーパークラスのメソッドを実装すべきではないからです!
あなたはこのような何かしたい:
public interface InterfaceForB {
void b();
void a();
}
public class A {
public void a(){}
}
public class B extends A implements InterfaceForB{
public void b(){}
}
をはい、それがコンパイルされます。しかし、それはひどいスタイルだと言われているので、a()
メソッドがで実装されているため、A
にが実装されているため、B
はインターフェイスを実装していません。
私の強大なアドバイス:IntelliJの提供するリファクタリングを使用し、実際のクラスで実装されているのというメソッドをインターフェイスに抽出するだけです。
public class B extends A implements InterfaceForB{
public void b(){}
public void a(){ super(); }
}
そして今のIntelliJ(とEclipse)インタフェースにあなたがそれを望むように抽出することができます。それはすべてインターフェイスメソッドを実装するように与えられた例えばB
を実装します。