Возьмите этот пример:
abstract class Base {
function __construct() {
echo 'Base __construct<br/>';
}
}
class Child extends Base {
function __construct() {
echo 'Child __construct<br/>';
}
}
$c = new Child();
Происходя из среды C#, я ожидаю, что вывод будет
Основа __ конструкция
Ребенок __ конструкция
Однако эффективная выходная мощность справедлива
Ребенок __ конструкция
Я использовал подобную структуру для хранения данных о собственности, и я думаю, что это нормально, пока таблица останется относительно маленькой. Таблица entity-attribute-value ( EAV ), подобная этой, может занимать больше места и демонстрировать более низкую производительность запроса, чем традиционная таблица со структурой столбцов, но это не должно быть проблемой для набора свойств приложения разумного размера.
-121--3740404-Как примерно
(angle % 360) - 179
Это на самом деле вернет другие результаты, чем наивный подход, представленный в вопросе, но он сохранит угол между указанными границами. (Я полагаю, что это может сделать это неправильным ответом, но я оставлю это здесь, если это решит аналогичную проблему других лиц).
-121--1310195-Нет, конструктор родительского класса не вызывается, если дочерний класс определяет конструктор.
Из конструктора дочернего класса необходимо вызвать конструктор родительского класса:
parent::__construct();
При необходимости передайте ему параметры.
Как правило, вы будете делать это в начале конструктора дочернего класса, перед любым конкретным кодом; что означает, что в вашем случае у вас будет:
class Child extends Base {
function __construct() {
parent::__construct();
echo 'Child __construct<br/>';
}
}
И, для справки, вы можете взглянуть на эту страницу руководства PHP: Конструкторы и деструкторы - в ней указано (цитирование) :
Примечание: Родительские конструкторы не вызываются неявно, если дочерний класс определяет конструктор.
Для запустить родительский конструктор, вызовродитель:: __ конструкция ()
в пределах требуется дочерний конструктор.
Это выглядит хорошо: http://www.catonmat.net/blog/derivation-of-ycombinator/
-121--1032017- Не так умно, но нет, если.
angle = (angle + 179)% 360 - 179;
Но я не уверен, как Java обрабатывает по модулю отрицательные числа. Это работает только в том случае, если -1 по модулю 360 равно 359.
UPDATE
Только что проверил документы и a% b
дает значение между - (| b | - 1)
и + (| b | - 1)
, поэтому код нарушен . Для учета отрицательных значений, возвращаемых оператором по модулю, необходимо использовать следующее.
angle = ((angle + 179) % 360 + 360) % 360 - 179;
Но... нет... никогда... Используйте нечто подобное исходному решению, но фиксированное для значений меньше -179.
-121--1310203-Ну, я только что нашел это в документах :
Примечание: Родительские конструкторы не являются вызывается неявно, если дочерний класс определяет конструктор. Для выполнения родительский конструктор, вызов Parent::__construct () внутри ребенка требуется конструктор.