Если они определяются общественность в исходном классе, Вы не можете переопределить их, чтобы быть частными в Вашем производном классе. Однако Вы могли заставить открытый метод выдать исключение и реализовать Вашу собственную закрытую функцию.
Редактирование: Jorge Ferreira корректен.
Возможно, вы работаете на встроенном устройстве, которое не имеет часов реального времени.
Исходный код glibc утверждает, что системный вызов времени не может завершиться ошибкой в Linux:
time_t res = INTERNAL_SYSCALL (time, err, 1, NULL);
/* There cannot be any error. */
и это действительно так, если вы посмотрите исходный код ядра:
SYSCALL_DEFINE1(time, time_t __user *, tloc)
{
time_t i = get_seconds();
if (tloc) {
if (put_user(i,tloc))
return -EFAULT;
}
force_successful_syscall_return();
return i;
}
У вас есть так называемые системные часы. Если это сломано, то это не удастся, хотя может быть много других причин.
В дополнение к приведенным выше ответам конструктор является деталью реализации. Интерфейс определяет контракт, который описывает его поведение, а не то, как он собирается.
По этой причине вы не можете заставить разработчика иметь конкретный конструктор. Я думаю, что что бы вы ни пытались сделать, интерфейс не подходит.
Обновление : В этой статье Инструмент обработки аннотаций описывается, как вы можете создать обработчик аннотаций и аннотаций, которые вступят в силу во время компиляции и проверьте, что у класса есть конструктор без аргументов.
Его можно адаптировать для работы с конструктором с одним аргументом, который принимает экземпляр карты.
Чтобы процитировать статью, его использование будет похоже на:
Очевидным случаем может быть система, внутренние часы которой требуют внешней инициализации (например, с использованием NTP). Пока это не произошло, внутренние часы не могут давать значения, относящиеся к эпохам, хотя их можно использовать для измерения интервалов. time_t
зависит от эпохи, поэтому time (NULL)
в этом случае должен завершиться ошибкой.