вполне разумно. Впрочем, с давних времен повелось, что большинство объектно-ориентированных языков использовали ключевое слово class в смысле «Я собираюсь описать новый тип объектов». За ключевым словом class следует имя нового типа. Например:
class ATypeName { /* Тело класса */ }
Эта конструкция вводит новый тип, и поэтому вы можете теперь создавать объект этого типа ключевым словом new:
ATypeName а = new ATypeNameO;
Впрочем, объекту нельзя «приказать» что-то сделать (то есть послать ему необходимые сообщения) до тех пор, пока для него не будут определены методы.
Поля и методы
При определении класса (строго говоря, вся ваша работа на Java сводится к определению классов, созданию объектов этих классов и посылке сообщений этим объектам) в него можно включить две разновидности элементов:
Каждый объект использует собственный блок памяти для своих полей данных; совместное использование обычных полей разными объектами класса невозможно. Пример класса с полями:
class DataOnly { int i, double d; boolean b;
}
Такой класс ничего не
DataOnly data = new DataOnlyO;
Полям класса можно присваивать значения, но для начала необходимо узнать, как обращаться к членам объекта. Для этого сначала указывается имя ссылки на объект, затем следует точка, а далее — имя члена, принадлежащего объекту:
ссылка.член Например:
data i = 47;
data.d =1.1,
data.b = false;
Также ваш объект может содержать другие объекты, данные которых вы хотели бы изменить. Для этого просто продолжите «цепочку из точек». Например:
myPlane.leftTank.capacity = 100;
55
Класс DataOnly не способен ни на что, кроме хранения данных, так как в нем отсутствуют методы. Чтобы понять, как они работают, необходимо разобраться, что такое
Значения по умолчанию для полей примитивных типов
Если поле данных относится к примитивному типу, ему гарантированно присваивается значение по умолчанию, даже если оно не было инициализировано явно (табл. 2.2).
Таблица 2.2. Значения по умолчанию для полей примитивных типов
Примитивный тип
Значение по умолчанию
boolean
false
char
ЛиОООО' (null)
byte
(byte)O
short
(short)O
int
0
long
OL
float
O.Of
double
O.Od
Значения по умолчанию гарантируются Java только в том случае, если переменная используется
Такая гарантия не относится к
int х;
Переменной х будет присвоено случайное значение (как в С и С++); она не будет автоматически инициализирована нулем. Вы отвечаете за присвоение правильного значения перед использованием х. Если же вы забудете это сделать, в Java существует очевидное преимущество в сравнении с С++: компилятор выдает ошибку, в которой указано, что переменная не была инициализирована. (Многие компиляторы С++ предупреждают о таких переменных, но в Java это считается ошибкой.)
Методы, аргументы и возвращаемые значения
Во многих языках (таких как С и С++) для обозначения именованной подпрограммы употребляется термин
Методы, аргументы и возвращаемые значения
в написании, но в дальнейшем в книге будет употребляться преимущественно термин «метод».
Методы в Java определяют сообщения, принимаемые объектом. Основные части метода — имя, аргументы, возвращаемый тип и тело. Вот примерная форма:
возвращаемыйТип ИмяМетодаС /* список аргументов */ ) { /* тело метода */
}
Возвращаемый тип — это тип объекта, «выдаваемого» методом после его вызова. Список аргументов определяет типы и имена для информации, которую вы хотите передать в метод. Имя метода и его список аргументов (объединяемые термином