2016-10-25 4 views
0

私はこのように非常に類似した方法を使用する2つのクラスがあります。主な違いは、インターフェイス上に呼び出されるメソッドですので、私は、可能な場合は、親クラス内の1つの方法を載せていきたいと思いますこのメソッドを再利用可能にするにはどうすればよいですか?

method classA() { 
    some variable initialization 
    get this common interface In 

    try { 
     do something 
     In.methodAA(); 

    catch() { 
     do something 
    } 
} 


method classB() { 
    some variable initialization 
    get this common interface In 

    try { 
     do something 
     In.methodBB() 

    catch() { 
     do something 
    } 
} 

を。どのように達成することができますか?

私はjava7を使用しています。

答えて

-1

、何かのように:

abstract class Parent { 
    public void job() { 
    try { 
     doJob(); 
    } 
    catch (Exception e) { 
     e.printStackTrace(); 
    } 
    } 

    protected abstract void doJob(); 
} 

class Child1 extends Parent { 
    @Override protected void doJob() { 
    /* implementation */ 
    } 
} 
+0

は、なぜこれが否決されたのですか? –

+0

@solarapricot:最初の問題は、スーパークラスにコードの一部を組み込む必要があるように見えます。これは通常どのように行うのですか? – Jack

1

私は第三ユーティリティクラスを使用しますありがとう

static method classC(classType){ 

    some variable initialization 
    get this common interface In 
    try { 
     do something 

     if (classType is A) 
     In.methodAA() 
     else 
     In.methodBB() 

    } catch() { 
     do something 
    } 
} 
あなたが共通のインタフェースを呼び出すために知っているように abstract方法を提供する必要が
0

AとBのクラスで実装された共通のインターフェイスを使用します。

interface Behaviour { 
    void execute(); 
} 

public class A implements Behaviour { 
    @Override 
    public void execute() { 
     // do method A logic 
    } 
} 

public class B implements Behaviour { 
    @Override 
    public void execute() { 
     // do method B logic 
    } 

} 

public class TemplateClass { 
    private Behaviour behaviour; 

    public TemplateClass(Behaviour behaviour) { 
     this.behaviour = behaviour; 
    } 

    public void commonMethod() { 
     try { 
      // do something 
      // .. 

      // call specific logic 
      behaviour.execute(); 
     } catch (Exception e) { 
      // handle ex 
     } 

    } 
} 

使用

//using A class 
TemplateClass polymorphicVariable = new TemplateClass(new A()); 
polymorphicVariable.commonMethod(); 

//using B class 
polymorphicVariable = new TemplateClass(new B()); 
polymorphicVariable.commonMethod(); 
関連する問題