2017-12-14 8 views
1

기본 클래스에서 상속 한 메소드가 있습니다.
I했습니다 방법을 상속을 무시하지만 같은 일을, 지금 나는 경우이 작업을 수행 할 수 있습니다 물론 envoriment 변수동일한 implment에 대해 여러 메소드를 재정의합니다.

//specific implications 
@Override 
protected boolean prepareDirectory(Configuration configuration, Logger logger) throws Exception 

    //logic here as before 
    if(env===“global”) { 

     //do something 
    } 
} 

에 따라 추가 시나리오를 지원하기 위해 모든 방법을 변경해야 할 5 개 클래스 작동하는 모든 수업 안에 있지만 이것을 극복하기위한 더 나은 방법이 있습니다.
모든 5 클래스는 new if 내부에서 동일한 로직을 사용해야합니다.

+1

if (env === "global") {'이 (가) 유효한 Java가 아닙니다. 자바와 자바 스크립트를 혼동하고 있습니까? 이들은 두 가지 다른 프로그래밍 언어입니다. – Jesper

+0

@Jesper - 이것은 단지 pasudo 코드이지만 env를 얻는다고 가정합니다. –

+0

@Jesper : 아마도 따옴표 같은 오타입니다. 매개 변수의'@ Override','protected','boolean','throws' 및 types는 모두 자바 스크립트가 아니라 자바를 제안합니다. –

답변

2

당신은 추상적 인 방법으로 그것을 달성 할 수 있습니다. 예 :

abstract class BaseClass { 

    abstract void basePrepare(Configuration configuration, Logger logger); 

    protected boolean prepareDirectory(Configuration configuration, Logger logger) throws Exception { 
    if (/* condition */) { 
     basePrepare(configuration, logger); // implementing class does his stuff 
     } 
    } 
} 
+0

고마워, 내가이 수업을 어떻게 조합하여 5 학급에서 일할 수 있는지 좀 더 설명 할 수 있겠 니? –

+0

게다가 모든 5 개의 클래스는 추상 코드에서 상속받을 수 있습니다. –

+0

내가 게시 한 코드 스 니펫으로 추상 클래스로 기본 클래스를 만듭니다. 상속 된 클래스는'basePrepare' 메소드를 구현해야합니다. 자식 클래스에서'prepareDirectory'를 오버라이드 할 필요가 없습니다. 왜냐하면 자식 클래스는 실행될 지정된 추상 메소드가 있기 때문입니다. 다른 동작이 필요한 경우 더 많은 초록 메서드를 추가하십시오. 기본 로직은 변경되지 않으며 하위 클래스는 구현 세부 사항을 알 필요가 없습니다. –

1

Java 8로 작업하는 경우 기본 방법으로 인터페이스를 사용해야합니다.

인터페이스를 만든 다음 기본 액세스 한정자를 사용하여 하나의 메서드를 만드는 것이 가장 좋은 방법입니다.

1

당신은 같은 시간에, 당신의 다섯 개 클래스의 일반적인 논리를 수행하고, 기본 클래스에 의해, 특정 로직을 수행하는 그들의 각 하나의 가능성을 준다 수행 할 수 있습니다

abstract class Base { 
     public RETURN_TYPE commonLogic(SOME_PARAMS){ 

     //common logic goes here 

     } 

    public abstract RETURN_TYPE specificLogic(SOME_PARAMS); 

    } 

을 다음이 기본 클래스를 상속하여 특정 논리를 구현합니다.

class Logic1 extends Base{ 

    @Override 
     public RETURN_TYPE specificLogic(SOME_PARAMS){ 

     // your specific logic 

     } 
    }