четверг, 16 июня 2016 г.

A programmer: Java #2: Getters, Setters, Constructors, Overloading

Вероятно, эти мои записи про Java должны выглядеть весьма странно, потому что альтернативой или каким-то сколько-нибудь самостоятельным вариантом учебника они никк не являются. На самом деле они - короткие записи о том, что я смог объяснить себе из непонятого или плохо понятого ранее. Сегодня - геттеры/сеттеры, перегрузка и конструкторы.

Дело в том, что на JavaRush, как оказалось, не вполне понятная последовательность изложения (типа "а вот тут еще вот такая штука есть"), поэтому указанные вещи не вписывались в систему. А вот с помощью уже упоминавшегося видеокурса "Java для тестировщиков" эти вещи сложились в целостную картинку.

Все те вещи, о которых пойдет речь - следствия ООП. Так, например, если для инкапсуляции в классах выставлены ограничения доступа, то для того, чтобы этот доступ все-таки при необходимости получить, используются сеттеры и геттеры. Геттер - метод getNum(), например, - выдает вовне значение переменной, которая определена внутри класса, а сеттер - setNum(), соответственно, - позволяет извне это значение установить.

Конструкторы - это методы, создающие объекты данного класса. Дело в том, что когда я изучал создание объекта и конструкторы раньше, было неочевидно, что при создании нового объекта без передаваемых параметров вызывается конструктор (например, Class a = new Class()). Неочевидно не только потому, что не объяснили, но и потому, что он в классе есть по умолчанию и в коде не обязательно прописан. Соответственно, в изложении учебного материала конструкторы появляются как бы "вдруг", только когда надо в создаваемом объекте указать параметры.

Перегрузка (overloading) означает всего навсего возможность создавать методы с одинаковым именем, но разными параметрами (типом и/или количеством). Это нужно для того, чтобы иметь возможность как бы "уточнять" некоторый метод в зависимости от новых контекстов (например, потребность передать другой параметр), не переписывая всю программу.

Ну и еще одно важное дополнение. Java очень "экономно" работает с памятью. С одной стороны, есть "сборщик мусора", который освобождает память, убирая из нее значения неиспользуемых переменных. А с другой, - объекты не-примитивных типов создаются один раз, а дальше используются только ссылки на эти объекты. И это следует учитывать при операциях с ними.

Комментариев нет: