Я хочу иметь семейство классов, которые имеют одинаковый метод. Поскольку этот метод достаточно прост, я хочу, чтобы сделать его окончательным статическим, что-то вродепубличный абстрактный статический метод - почему бы не разрешить?
class A {
public static final String createSth() { }
}
(на самом деле этот метод возвращает только строку).
Иногда полезно использовать верхние листы всех классов A, B, C тем же способом. Таким образом, я хотел бы создать материнский класс.
class abstract Mother {
public static abstract String createSth() { }
}
, а затем добавить соответствующие расширения для всех моих классов A, B, C ex. класс А расширяет Мать.
К сожалению, это запрещено Java. Мне интересно, почему?
Конечно, я могу удалить статический окончательный модификатор, а затем все в порядке. Но с другой стороны, если каждый подкласс возвращает константу String, которая никоим образом не модифицируется, почему бы и нет?
Вы можете спросить, в чем цель такой конструкции?
Просто я хочу создать базу данных sql-строк. Для каждой таблицы я создал отдельный класс, и в результате метода createSth я хочу вернуть sql, создав таблицу для этого класса.
Интерфейсы не помогают ни.
Единственными решениями, по-видимому, являются удаление абстрактного модификатора из метода createSth в классе Mother. Но тогда мне не разрешено переходить к классу Mother и вызывать метод createSth для детей. Поэтому мне нужно удалить статический модификатор для дочерних классов.
Заключение Почему абстрактный метод не может быть статическим? Хорошо, я могу это даже понять, но почему почему не статический абстрактный метод не может быть заменен статическим методом в дочернем классе?
Что возвращает строка, которая не «модифицируется каким-либо образом»? Как вы считаете, последний модификатор метода? –
Какова цель абстрактного статического метода? –