2013-07-27 2 views
0

일반적인 질문이 있습니다. 다른 클래스의 원본 복사본이지만 추가 변수가 포함 된 클래스를 만들 수 있습니까?수퍼 클래스에 Java 추가 변수

예를 들어 나는이 JPanel과 함께 가능하다는 것을 알고

public class CustomPanel extends JPanel{ 
    int exampleVariable = 0; 
} 

이 아무 문제없이 가능하다. 하지만 다른 수업에서도이 작업을 수행 할 수 있습니까? 필자의 경우, Image으로 처리하고 싶습니다. 그러나 가능하지 않습니다. extends Image을 추가 할 때 필 요한 메소드를 구현해야하는데 이는 새로운 Image 클래스를 프로그래밍해야한다는 것을 의미합니다. 다른 방법으로 가능합니까?

편집 : 내 목표는

답변

5

java.awt.Imageabstract 클래스입니다.

따라서 확장 할 때 이 모든 메소드를 무시해야합니다.

비 추상 클래스를 확장하면 메서드가 구현되므로 final이 아니거나 클래스 자체가 final이 아닌 경우 메서드를 재정의하도록 선택할 수 있습니다.

그러나 abstract 클래스는 @Override을 통해 메소드를 구현하여 특별히 확장되도록 설계되었습니다.

Here은 더 자세히 조사하기위한 좋은 출발점입니다.

+0

이것은 그가 원하지 않는 것입니다. –

+3

메나는 OP가 그들이 관찰 한 행동을 얻는 이유를 설명하고 있습니다. – selig

+0

@selig thanks. 명확성을 위해 내 대답을 자세히 설명합니다. – Mena

2

Image는 추상 클래스입니다 ... 이미지 이름을 설정하는 방법을 추가했다, 당신은 그것의 하나가, BufferedImage 또는 VolatileImage 중 하나를 서브 클래스의 확장하고자합니다.

+0

왜 이것을 downvoted 했습니까? – MikeFHay

+0

나는 모릅니다. 그러나 어쨌든 고맙습니다. –

1

원하는 것을하기 위해서는 실제로 사용하는 Image를 확장하는 구체적인 클래스에 액세스해야합니다. 그런 액세스 권한이 있다면 추가 된 변수로 확장하는 클래스를 만들 수 있습니다.

예를 들어, java.util.AbstractList 및 java.util.ArrayList를 고려하십시오. ArrayList를 확장하여 추가하려는 항목 만 구현할 수 있습니다. AbstractList를 확장하려면 더 많은 것을 구현해야한다.

경우에 따라 구현 클래스는 비공개이며 상황에 따라 실행 방식이 변경 될 수 있으므로 항상 가능한 것은 아닙니다.

정확한 콘크리트 이미지 하위 클래스를 확장하여 식별 할 수없는 경우 구성을 고려하는 것이 좋습니다. 이미지 참조, 이미지를 리턴하는 getImmage 메소드 및 이미지와 연관시키려는 데이터가있는 클래스를 작성하십시오. 주위를 둘러보고 클래스의 인스턴스에 대한 참조를 저장하지만 Image 작업을 수행해야 할 때마다 getImage 메서드를 사용하여 Image 참조를 가져옵니다.

1

Image은 추상 클래스입니다. 따라서, 만약 당신이 그것을 확장한다면 전체 휠을 재발 명시키는 것과 같은 모든 추상적 인 메소드를 구현해야 할 것입니다. 그러나 Image 클래스를 이미 구현 한 클래스를 확장하고 이미 구현 된 모든 메서드를 사용할 수 있습니다. 예 : BufferedImage. 그것은 다음과 같을 것입니다 :

public class CustomImage extends BufferedImage{ 
    // Override its non final methods of your concern.. 
}