
- •Глава 2
- •Глава 2. Обзор языка Java 31_
- •Глава 2. Обзор языка Java
- •Глава 2. Обзор языка Java 37
- •Глава 2. Обзор языка Java 39
- •Глава 2. Обзор языка Java 41
- •Часть I. Язык Java
- •Глава 2. Обзор языка Java 43_
- •Глава 2. Обзор языка Java 45_
- •Глава 2. Обзор языка Java 47
- •Глава 2. Обзор языка Java 49_
- •Часть I. Язык Java
- •Глава 2. Обзор языка Java 57
- •Глава 3
- •Глава 3. Типы данных, переменные и массивы 53
- •Глава 3. Типы данных, переменные и массивы _ 55
- •Глава 3. Типы данных, переменные и массивы
- •Глава 3. Типы данных, переменные и массивы 59_
- •Глава 3. Типы данных, переменные и массивы 61_
- •Глава 3. Типы данных, переменные и массивы
- •Глава 3. Типы данных, переменные и массивы 65_
- •Часть I. Язык Java
- •Глава 3. Типы данных, переменные и массивы 67_
- •Часть I. Язык Java
- •Глава 3. Типы данных, переменные и массивы 69_
- •Глава 3. Типы данных, переменные и массивы 71_
- •Глава 3. Типы данных, переменные и массивы 73_
- •Глава 3. Типы данных, переменные и массивы
- •Часть I. Язык Java
- •Глава 3. Типы данных, переменные и массивы _ 77_ Эта программа генерирует следующий вывод:
- •Глава 3. Типы данных, переменные и массивы 79
- •Часть I. Язык Java
- •Глава 3. Типы данных, переменные и массивы 81_
- •Глава 4
- •Глава 4. Операции 83
- •84 Часть I. Язык Java
- •Глава 4. Операции 85_
- •Глава 4. Операции 87_
- •88_ Часть I. Язык Java
- •Глава 4. Операции 89
- •Глава 4. Операции 91_
- •Глава 4. Операции 93_
- •Глава 4. Операции 95_
- •Глава 4. Операции 97_
- •Глава 4. Операции 99
- •Глава 4. Операции 101
- •Глава 4. Операции 103
- •104 Часть I, Язык Java
- •Глава 4. Операции 105
- •Глава 5
- •Глава 5, Управляющие операторы 107
- •Глава 5. Управляющие операторы 109
- •110 Часть I. Язык Java
- •Глава 5, Управляющие операторы 111
- •Глава 5. Управляющие операторы 113
- •Глава 5. Управляющие операторы
- •Глава 5. Управляющие операторы 117
- •118 Часть I. Язык Java
- •Глава 5. Управляющие операторы 119
- •Глава 5. Управляющие операторы 121
- •122 Часть I. Язык Java
- •Глава 5. Управляющие операторы 123
- •Глава 5. Управляющие операторы 125
- •Глава 5. Управляющие операторы 127
- •Глава 5. Управляющие операторы 129
- •Глава 5. Управляющие операторы
- •Глава 6
- •134 Часть I. Язык Java
- •Глава 6. Введение в классы 135
- •136 Часть I. Язык Java
- •Глава 6. Введение в классы _ 137
- •Глава 6. Введение в классы 139
- •Глава 6. Введение в классы
- •Глава 6. Введение в классы 143
- •Глава 6. Введение в классы 145
- •Глава 6. Введение в классы 147
- •Глава 6. Введение в классы 149
- •Глава 6. Введение в классы 151
- •154 Часть I. Язык Java
- •Глава 6. Введение в классы 155
- •Глава 6. Введение в классы 157
- •Глава 7
- •Глава 7. Методы и классы 159
- •Глава 7. Методы и классы . 161
- •Глава 7. Методы и классы • 163
- •164 Часть I. Язык Java
- •Глава 7. Методы и классы 165
- •Глава 7. Методы и классы 167
- •Глава 7. Методы и классы 169
- •Глава 7, Методы и классы 171-
- •Глава 7. Методы и классы 173
- •Глава 7. Методы и классы 775
- •Глава 7. Методы и классы 177
- •Глава 7. Методы и классы ' 179
- •Глава 7. Методы и классы 1_81_
- •Глава 7. Методы и классы 1_83
- •184 '• Часть I. Язык Java
- •Глава 7. Методы и классы . 185
- •Глава 7. Методы и классы 187
- •Глава 8
- •Глава 8. Наследование 191
- •Глава 8. Наследование 193
- •Глава 8, Наследование 195
- •Глава 8. Наследование 197
- •198 Часть I. Язык Java
- •Глава 8, Наследование 199
- •Глава 8. Наследование 201
- •202 Часть I. Язык Java
- •Глава 8. Наследование 203
- •Глава 8. Наследование 205
- •Глава 8. Наследование 207
- •Глава 8. Наследование 209
- •Глава 8. Наследование 211
- •Глава 8. Наследование 213
- •Глава 8. Наследование 215
- •Глава 8. Наследование 217
- •Глава 12
- •Глава 12. Ввод/вывод, апплеты и другие темы 303_
- •Глава 12. Ввод/вывод, апплеты и другие темы . 305
- •Глава 12. Ввод/вывод, алплеты и другие темы 307
- •Глава 12. Ввод/вывод, апплеты и другие темы 309
- •Глава 12. Ввод/вывод, апплеты и другие темы 311
- •Глава 12. Ввод/вывод, апплаты и другие темы 313
- •314 Часть I. Язык Java
- •Глава 12. Ввод/вывод, апплеты и другие темы 315
- •Глава 12. Ввод/вывод, апплеты и другие темы 317
- •Глава 12. Ввод/вывод, апплеты и другие темы 319
- •320 Часть I. Язык Java
- •Глава 12. Ввод/вывод, апплеты и другие темы 321
- •Глава 12. Ввод/вывод, апплеты и другие темы 323
- •324 Часть I. Язык Java
- •Глава 12. Ввод/вывод, апплеты и другие темы 325
- •326 Часть I. Язык Java
- •Глава 12. Ввод/вывод, апплегы и другие темы 327
Глава 6. Введение в классы 147
Вы можете использовать параметризованный метод, чтобы улучшить класс вех. В предыдущих примерах размеры каждого блока должны быть установлены отдельно при помощи последовательности следующих операторов:
myboxl.width = 10; myboxl.height = 20; myboxl.depth = 15;
Хотя этот код работает, однако возникает некоторое беспокойство. Во-первых, он кажется каким-то не изящным и склонным к ошибкам. Например, легко забыть установку измерений. Во-вторых, в хорошо разработанных Java-программах к переменным экземпляра нужно обращаться только через методы, определенные их классом. В будущем вы сможете изменять поведение метода, но вы не можете изменять поведение установленной переменной экземпляра.
Таким образом, лучший подход к установке размеров блока состоит в том, чтобы создать метод, который берет измерения блока в свои параметры и походящим образом устанавливает каждую переменную экземпляра. Эта концепция реализована следующей программой:
// Эта программа использует параметризованный метод.
class Box { double width; double height; double depth;
// вычислить и возвратить объем double volume () {
return width * height * depth; }
// установить размеры блока
void setDim(double w, double h, double d) {
width = w;
height = h;
depth = d; } }
class BoxDemoS {
public static void main(String args[]) { Box myboxl = new Box(); Box mybox2 = new Box(); double vol;
// инициализировать каждый блок myboxl.setDim(10, 20, 15); mybox2.setDim(3, 6, 9);
148 ^ Часть I. Язык Java
// получить объем первого блока
vol = myboxl.volume();
System.out.println("Объем равен " + vol);
// получить объем второго блока vol = mybox2.volume();
System.out.println("Объем равен " + vol); } }
Как можно заметить, метод setoimO используется, чтобы установить размеры каждого блока. Например, когда
myboxl. setDim( 10, 20, 15);
выполняется, 10 копируется в параметр w, 20 копируется в h и 15 копируется в а. Внутри метода setoimo значения w, h и d затем назначаются перемен-
ным width, height И depth, соответственно.
Для многих читателей — особенно тех, кто имеет некоторый опыт программирования в C/C++ — концепции, представленные в предшествующих разделах, конечно знакомы. Однако если такие понятия, как вызовы метода, аргументы и параметры являются для вас новыми, то, прежде чем двигаться дальше, желательно потратить некоторое время на эксперименты. Концепции вызова метода, параметры и возврат значений фундаментальны для Java-программирования.
Конструкторы
При создании экземпляров весьма утомительно инициализировать все переменные в классе. Даже, когда вы добавляете функции для организации удобств, подобные setoimo, было бы проще и быстрее делать всю установку во время первоначального создания объекта. Поскольку требования инициализации являются достаточно общими, Java разрешает инициализацию объектов в момент их создания. Эта автоматическая инициализация выполняется с помощью конструктора.
Конструктор инициализирует объект после его создания. Он имеет такое же имя, как класс, в котором он постоянно находится и синтаксически подобен методу. Если конструктор определен, то он автоматически вызывается сразу же после того, как объект создается, и прежде, чем завершается выполнение операции new. Конструкторы выглядят немного странными, потому что не имеют ни спецификатора возвращаемого типа, ни даже спецификатора void. Происходит это от того, что неявным возвращаемым типом конструктора класса является тип самого класса. Работа конструктора заключается в том, чтобы инициализировать внутреннее состояние объекта