Решение для расширения нескольких классов

Допустим, у меня есть класс A и B, которые отличаются, за исключением использования цветовых переменных. Оба класса уже расширяют класс JPanel, поэтому я не могу расширить новый класс с переменными цвета в нем. Затем я подумал, что мог бы сделать класс C (с цветами в нем) интерфейсом. Но нельзя иметь атрибуты в интерфейсе.

Любая идея, как я все еще могу использовать цвета во внешнем классе для обоих классов A + B?

Мысль:

Класс А - использует цвета
Класс B - использует цвета
Класс C - имеет цвета.

2 ответа

Решение

Вы всегда можете использовать интерфейс для хранения констант.

public interface C{
    Color a;
    Color b; 
    //And so on
}

Теперь пусть A и B реализуют этот класс, и это должно быть сделано.

public interface C {
  public static final Color c1 = Color.RED;
  public static final Color c2 = Color.GREEN;
  public static final Color c3 = Color.BLUE;
}

public class A extends JPanel implements C {
    /* ... */
}

public class B extends JPanel implements C {
    /* ... */
}

РЕДАКТИРОВАТЬ: Как отмечено в комментарии Луиджи Мендосы, ваш Colors должен быть статичным и окончательным.

Другие вопросы по тегам