Программирование на языке Java

       

Классы


Глава 7 Классы

Базовым элементом объектно-ориентирован­ного программирования в языке Java являет­ся класс. В этой главе Вы научитесь создавать и расширять свои собственные классы, работать с экземплярами этих классов и начнете использовать мощь объектно-ориентированного подхода. Напомним, что классы в Java не обязательно должны содержать метод main. Единственное назначение этого метода — указать интерпретатору Java, откуда надо начинать выполнение программы. Для того, чтобы создать класс, достаточно иметь исходный файл, в котором будет присутствовать ключевое слово class, и вслед за ним — допустимый идентификатор и пара фигурных скобок для его тела.

class Point {

}

ЗАМЕЧАНИЕ

Имя исходного файла Java должно соответствовать имени хранящегося в нем класса. Регистр букв важен и в имени класса, и в имени файла.

Как вы помните из главы 2, класс — это шаблон для создания объекта. Класс определяет структуру объекта и его методы, образующие функциональный интерфейс. В процессе выполнения Java-программы система использует определения классов для создания представителей классов. Представители являются реальными объектами.

Термины «представитель», «экземпляр» и «объект» взаимозаменяемы. Ниже приведена общая форма определения класса.

class имя_класса extends имя_суперкласса { type переменная1_объекта:



type переменная2_объекта:

type переменнаяN_объекта:

type имяметода1(список_параметров) { тело метода;

}

type имяметода2(список_параметров) { тело метода;

}

type имя методаМ(список_параметров) { тело метода;

}

}

Ключевое слово extends указывает на то, что «имя_класса» — это подкласс класса «имя_суперкласса».

Во главе классовой иерархии Java стоит единственный ее встроенный класс — Object. Если вы хотите создать подкласс непосредственно этого класса, ключевое слово extends и следующее за ним имя суперкласса можно опустить — транслятор включит их в ваше определение автома­тически. Примером может служить класс Point, приведенный ранее.


 



Переменные представителей (instance variables)



Данные инкапсулируются в класс путем объявления переменных между открывающей и закрывающей фигурными скобками, выделяющи­ми в определении класса его тело. Эти переменные объявляются точно так же, как объявлялись локальные переменные в предыдущих примерах. Единст­венное отличие состоит в том, что их надо объявлять вне методов, в том числе вне метода main. Ниже приведен фрагмент кода, в котором объявлен класс Point с двумя переменными типа int.

class Point { int х, у;



}



В качестве типа для переменных объектов можно использовать как любой из простых типов, описанных в главе 4, так и классовые типы. Скоро мы добавим к приведенному выше классу метод main, чтобы его можно было запустить из командной строки и создать несколько объек­тов.

 



Оператор 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.y = 20;



р2.х = 42;



р2.у = 99;



System.out.println("x = " + p1.x + " у = " + p1.y);



System.out.println("x =  " + р2.х + " у = " + р2.у);



} }



В этом примере снова использовался класс Point, было создано два объекта этого класса, и их переменным х и у присвоены различные зна­чения. Таким образом мы продемонстрировали, что переменные различ­ных объектов независимы на самом деле. Ниже приведен результат, полученный при выполнении этой программы.

С:\> Java TwoPoints



х = 10 у = 20



х = 42 у = 99



замечание

Поскольку при запуске интерпретатора мы указали в командной строке не класс Point, а класс TwoPoints, метод main класса Point был полностью проигнорирован. Добавим в класс Point метод main и, тем самым, получим закончен­ную программу.

class Point { int х, у;



public static void main(String args[]) {



Point p = new Point();



р.х = 10;



p.у = 20;



System.out.println("x =  " + р.х + " у = " + p.y);



} }



Объявление методов



Методы - это подпрограммы, присоединенные к кон­кретным определениям классов. Они описываются внутри определения класса на том же уровне, что и переменные объектов. При объявлении метода задаются тип возвращаемого им результата и список параметров. Общая форма объявления метода такова:

тип имя_метода (список формальных параметров) {



тело метода:



}



Тип результата, который должен возвращать метод может быть любым, в том числе и типом void - в тех случаях, когда возвращать результат не требуется. Список формальных параметров - это последова­тельность пар тип-идентификатор, разделенных запятыми. Если у метода параметры отсутствуют, то после имени метода должны стоять пустые круглые скобки.

class Point { int х, у;



void init(int a, int b) {



х = а;



У = b;



} }



 




Содержание раздела