"shape"라는 추상 부모 클래스가 있고 여러 개의 하위 클래스 (삼각형, 사각형, 원형 ...)가 있다고 가정 해 보겠습니다. 모든 하위 클래스가 구현해야하는 부모 "모양"클래스에서 추상 메서드를 정의하려면 "draw"라고 해 봅시다. 그래서 모든 도형 하위 클래스는 "draw()"메서드를 제공해야합니다. 그러나 draw 메소드는 "Stencil"유형의 매개 변수를 사용하며 모든 모양 하위 클래스가 스텐실을 사용할 수있는 것은 아닙니다 ...재정의 된 메서드에서 특수 매개 변수를 사용할 수 있습니까?
따라서 하나의 추상 "모양"클래스, 여러 모양 하위 클래스 및 여러 스텐실이 있습니다. 셰이프 클래스에 정의 된 draw 메서드가 필요합니다. 사각형은 스텐실 1을 사용하고 원은 스텐실 2를 사용할 수 있습니다.
제네릭이 트릭을 수행 할 것으로 추측하고 있지만 확실하지 않습니다. 각 도형 하위 클래스는 다른 클래스에서도 사용되므로 특정 스텐실로 그리기 메서드를 정의해야하며 컴파일러는 모든 프로그래머가 해당 클래스에서 지원하는 스텐실로 그리기 메서드를 호출하도록해야합니다. 프로그래머가 모든 스텐실을 사각형 클래스로 전달할 수 있기 때문에 "public abstract void draw (Stencil s)"와 같은 추상 메서드를 정의 할 수 없습니다. 사각형 클래스는 "Stencil1"만 지원합니다.
아이디어가 있습니까?
갱신 1 : 는 서브 클래스가 너무 다른 클래스에서 사용되기 때문에 모양 클래스는 서브 클래스에 의해 사용되는 스텐실 신경,하지만하지 않습니다 추가해야합니다, 그것은 그리기 방법은 수 있도록 정의하는 것이 중요에만 지원되는 스텐실은 컴파일러에서 허용됩니다. 이 컴파일 시간에 잡힐하려면
제외 모양 클래스는 관리, 당신이 명시된 바와 같이 있기 때문에, "그 클래스에서 지원하는 스텐실과 무승부 메소드를 호출하는 모든 프로그래머를 강제해야 컴파일러가" – cgp
아니, 모양 클래스는하지 않습니다 않는 것을 케어; 신경 써는 다양한 Shape 클래스의 다른 용도입니다. – user85116