2012-08-10 3 views
1

Mac 용 BlueJ 코드 java. stdlib.jar 라이브러리 (princeton에서 http://introcs.cs.princeton.edu/java/stdlib/)를 추가했습니다. 이 라이브러리를 추가하기 전에 StdDraw.java (프로젝트에서 사용하고 있던 특정 클래스)라는 이름의 클래스가 있고 코드를 복사/붙여 넣었습니다. 나는 또한 일부 코드를 수정하고 새로운 라인을 추가했다. 라이브러리 코드를 편집 할 수 없기 때문에 추가 기능을 추가하기 위해 라이브러리 클래스를 재정의하거나 확장 할 수 있습니까?Java의 사용자 라이브러리 클래스 무시.

+1

수업 연장 방법을 묻는 질문이 있으십니까? – gobernador

답변

0

그냥 단순히

public MyClass extends ClassFromLib 

라이브러리 jar 파일을 클래스 패스에 있는지 확인 클래스를 확장합니다. 그 클래스의 작성자가 서브 클래 싱에 적합하지 않다는 것을 나타내는 최종 선언을하면. 가장 좋은 대안은 위임 패턴을 사용하는 것입니다.

나는이 편집기에서 아래의 코드를 작성 했으므로이 규칙이 준수한다는 약속을하지 않았지만 잘하면 당신은 아이디어를 얻는다.

public Myclass { 
    private ClassFromLib cfl = new ClassFromLib(); 

    public void methodA(){ 
     //Do whatever you need here 
     cfl.methodA(); //Doesn't have to be the same name. 
     //Do whatever you need here 
    } 
} 
+0

내가 이것을 시도했을 때, "최종 수업을 연장 할 수 없다"고했습니다. – Vasseurth

1

라이브러리 클래스는 final이므로 확장 할 수 없습니다. 또 다른 옵션은 자신의 클래스로 래핑하는 것입니다. 예를 들어 위임 할 StdDraw의 인스턴스가있는 사용자 고유의 그리기 클래스를 만들 수 있습니다. 많은 메소드의 경우 StdDraw 인스턴스의 해당 메소드를 호출하거나 직접 메소드를 구현하여 대체를 시뮬레이트 할 수 있습니다.