문제

Java에서 클래스에 특정 서브 클래스 세트가 있고 다른 클래스 세트가 없음을 시행하는 것이 가능합니까? 예를 들어:

public abstract class A {}
public final class B extends A {}
public final class C extends A {}
public final class D extends A {}

다른 서브 클래스를 만들 수 없다는 것을 어떻게 든 시행 할 수 있습니까?

도움이 되었습니까?

해결책 4

구조를 인코딩하는 교회 :

public abstract class A {
  public abstract <R> R fold(R b, R c, R d);
}

세 가지 구현 만 가능합니다.

public final class B extends A {
  public <R> R fold(R b, R c, R d) {
    return b;
  }
}

public final class C extends A {
  public <R> R fold(R b, R c, R d) {
    return c;
  }
}

public final class D extends A {
  public <R> R fold(R b, R c, R d) {
    return d;
  }
}

다른 팁

수업을 줘 A 패키지 수준 접근성이있는 생성자 (및 기타 생성자).

Dave L., 다른 생성자에 대한 비트에 감사드립니다.

당신은 아마 열거를 원할 것입니다 (java> = 1.5). 열거 유형은 일련의 고정 값을 가질 수 있습니다. 그리고 그것은 수업의 모든 음식을 가지고 있습니다. 필드와 속성을 가질 수 있으며 인터페이스를 구현할 수 있습니다. 열거는 확장 될 수 없습니다.

예시:

enum A {

  B,
  C,
  D;

  public int someField;

  public void someMethod() {
  }


}

클래스 A, B, C, D를 별도의 패키지에 넣고 클래스 A를 공개적으로 만들 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top