سؤال

هل من الممكن في Java فرض أن الفصل يحتوي على مجموعة محددة من الفئات الفرعية وليس غيرها؟على سبيل المثال:

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

هل يمكنني بطريقة أو بأخرى فرض عدم إمكانية إنشاء فئات فرعية أخرى من 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 مُنشئ يتمتع بإمكانية الوصول على مستوى الحزمة (وليس مُنشئًا آخر).

شكرًا، ديف إل، على القليل من المعلومات حول عدم وجود مُنشئين آخرين.

وربما كنت ترغب في التعداد (جافا> = 1.5). نوع التعداد يمكن أن يكون مجموعة من القيم الثابتة. وكان لديه كل الأشياء الجيدة من فئة: أنها يمكن أن تحتوي على حقول والممتلكات، ويمكن أن تجعل منهم تنفيذ واجهة. لا يمكن أن تمتد إلى التعداد.

مثال:

enum A {

  B,
  C,
  D;

  public int someField;

  public void someMethod() {
  }


}

هل يمكن وضع الدرجة A، B، C، D في مجموعة منفصلة وجعل فئة A يست عامة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top