
- •Глава 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. Введение в классы 149
так, что код, создающий экземпляр, будет полностью инициализирован и пригоден для немедленного использования объекта.
Можно переделать пример box таким образом, чтобы размеры блока были автоматически инициализированы во время построения объекта. Для этого следует заменить метод setoimo конструктором. Начнем с определения простого конструктора, который устанавливает одинаковые значения для размеров каждого блока:
/* Box использует конструктор для инициализации
размеров блока. */ class Box {
double width;
double height;
double depth;
// Это конструктор класса Box. Box () {
System.out.println("Создание Box");
width = 10;
height -10;
depth = 10; }
// вычислить и возвратить объем double volume {) {
return width * height * depth; } }
class ВохОетоб {
public static void main(String args [] ) (
// объявить, разместить в памяти и инициализировать Box-объекты Box myboxl = new Box(); Box mybox2 = new Box () ;
double vol;
// получить объем первого блока
vol = myboxl.volume();
System.out.println("Объем равен " + vol);
// получить объем второго блока vol = mybox2.volume();
System, out ..println ("Объем равен " + vol); } }
150 Часть I. Язык Java
Когда эта программа выполняется, она генерирует следующие результаты:
Создание Box Создание Box Объем равен 1000.0 Объем равен 1000.0
Вы видите, что myboxi и mybox2 были инициализированы конструктором box о во время их создания. Так как конструктор дает всем блокам одинаковые размеры, 10x10x10, myboxi и mybox2 будут иметь один и тот же объем. Предложение println о внутри box о приводится только ради иллюстрации. Большинство функций конструктора ничего не будет отображать. Они просто инициализируют объект.
Прежде чем двигаться дальше, давайте повторно рассмотрим операцию new. Как вы знаете, при распределении (в памяти) объекта, нужно использовать следующую общую форму:
class-var = new c2assname();
Теперь вы можете понять, почему необходимы круглые скобки после имени класса. Фактически выполняется вызов конструктора класса. Таким образом, правая часть операции присваивания в строке
Box myboxi = new Box();
есть вызов конструктора box(). Если вы явно конструктор класса не определяете, то Java создает для этого класса конструктор по умолчанию (default constructor). Вот почему предшествующая строка программы работала в более ранних версиях box, где конструктор не был определен. Умалчиваемый конструктор автоматически инициализирует все переменные экземпляра нулями. Такой конструктор часто достаточен для простых классов, но не для более сложных. Как только в классе определяется собственный конструктор, умалчиваемый больше не используется.
Параметризованные конструкторы
Когда конструктор box о в предшествующем примере инициализирует вох-объект, это не очень полезно, потому что все блоки имеют одинаковые размеры. Необходим способ создания Box-объектов разных размеров. Простое решение состоит в добавлении параметров конструктора. Как вы можете, вероятно, предположить, это сделает его более полезным. Например, следующая версия box определяет параметризованный конструктор, который устанавливает размеры блока с помощью своих параметров. Обратите особое внимание на то, как создаются Box-объекты.
/* Здесь класс Box использует параметризованный конструктор
для инициализации размеров блока. */