7.1. Переменные класса
Данные инкапсулируются в класс путем объявления переменных между открывающей и закрывающей фигурными скобками, выделяющими в определении класса его тело. Эти переменные объявляются точно так же, как объявлялись локальные переменные в предыдущих примерах. Единственное отличие состоит в том, что их надо объявлять вне методов, в том числе вне метода main. Ниже приведен фрагмент кода, в котором объявлен класс Point с двумя переменными типа int.
>class Point {
>int x, у;
>}
В качестве типа для переменных объектов можно использовать как любой из простых типов, так и классовые типы.
7.2. Оператор new
Оператор new создает экземпляр указанного класса и возвращает ссылку на вновь созданный объект. Ниже приведен пример создания и присваивание переменной р экземпляра класса Point,
>Point р = new Point();
Вы можете создать несколько ссылок на один и тот же объект. Приведенная ниже программа создает два различных объекта класса Point и в каждый из них заносит свои собственные значения. Оператор «точка» используется для доступа к переменным и методам объекта.
>class TwoPoints {
>public static void main(String args[]) {
>Point p1 = new Point();
>Point p2 = new Point();
>p1.x= 10;
>p1.у = 20;
>p2.x = 42;
>p2.y = 99;
>System.out.println("x = " + p1.x + " у = " + p1.у);
>System.out.println("x = " + p2.x + "y = " + p2.y); }
>}
В этом примере использовался класс Point. Было создано два объекта этого класса. Переменным х и у объектов p1 и р2 присвоены различные значения. Таким образом, мы продемонстрировали, что переменные различных объектов независимы на самом деле. Ниже приведен результат, полученный при выполнении этой программы,
>С:\> Java TwoPoints
>х = 10 у = 20
>х = 42 у = 99
7.3. Объявление методов
Методы - это подпрограммы, присоединенные к конкретным определениям классов. Они описываются внутри определения класса на том же уровне, что и переменные объектов. При объявлении метода задаются тип возвращаемого им результата и список параметров. Общая форма объявления метода такова:
>тип имя_метода (список формальных параметров) {
>тело метода;
>}
Тип результата, который должен возвращать метод, может быть любым, в том числе и типом void - в тех случаях, когда возвращать результат не требуется. Список формальных параметров - это последовательность пар тип- идентификатор, разделенных запятыми. Если у метода параметры отсутствуют, то после имени метода должны стоять пустые круглые скобки.
>class Point {
>int x,y;
>void init(int a, int b) {
>x = a;
>y = b;
>}
>}
7.4. Вызов метода
В Java отсутствует возможность передачи параметров по ссылке на примитивный тип. В Java все параметры примитивных типов передаются по значению, а это означает, что у метода нет доступа к исходной переменной, использованной в качестве параметра. Заметим, что все объекты передаются по ссылке, можно изменять содержимое того объекта, на который ссылается данная переменная.
7.5. Скрытие переменных
В языке Java не допускается использование в одной или во вложенных областях видимости двух локальных переменных с одинаковыми именами. Интересно отметить, что при этом не запрещается объявлять формальные параметры методов, чьи имена совпадают с именами переменных представителей. Давайте рассмотрим в качестве примера иную версию метода init, в которой формальным параметрам даны имена х и у, а для доступа к одноименным переменным текущего объекта используется ссылка this.
>class Point {
>int x, у;
>void init(int x, int y) {
>this.x = x;
>this.y = у
>}
>}
>class TwoPointsInit {
>public static void main(String args[]) {
>Point p1 = new Point();
>Point p2 = new Point();
>p1.init(10, 20);
>p2.init(42, 99);
>System.out.println("x = " + p1.x + " у = " + p1.y);
>System.out.println(“x = " + p2.x + " у = " + p2.y);
>}
>}
7.6. Конструкторы
Инициализировать все переменные класса всякий раз, когда создается его очередной представитель, — довольно утомительное дело даже в том случае, когда в классе имеются функции, подобные методу init. Для этого в Java предусмотрены специальные методы, называемые конструкторами. Конструктор — это метод класса, который инициализирует новый объект после его создания. Имя конструктора всегда