
- •Основы классов
- •Общая форма класса
- •Простой класс
- •Объявление объектов
- •Операция new
- •Представление методов
- •Добавление метода к классу Box
- •Возврат значений
- •Добавление метода с параметрами
- •Конструкторы
- •Параметризованные конструкторы
- •Ключевое слово this
- •Скрытие переменной экземпляра
- •Сборка "мусора"
- •Метод finalize()
- •Класс Stack
- •Перегрузка конструкторов
- •Использование объектов в качестве параметров
- •Передача аргументов
- •Возврат объектов
- •Рекурсия
- •Управление доступом
- •Статические элементы
- •Спецификатор final
- •Ревизия массивов
- •Вложенные и внутренние классы
- •Класс String
- •Использование аргументов командной строки
- •Наследование
- •Основы наследования
- •11 Тело класса }
- •Доступ к элементам и наследование
- •Практический пример
- •Переменная суперкласса может ссылаться на объект подкласса
- •Использование ключевого слова super
- •Вызов конструктора суперкласса с помощью первой формы super
- •Создание многоуровневой иерархии
- •II построить клон объекта
- •Когда вызываются конструкторы
- •Переопределение методов
- •Динамическая диспетчеризация методов
- •Зачем нужны переопределенные методы?
- •Применение переопределения методов
- •Использование абстрактных классов
- •Void meth() { // ошибка! Нельзя переопределять.
- •Класс Object
Использование аргументов командной строки
Иногда нужно переслать информацию в программу во время ее выполнения. Это делается пересылкой аргументов командной строки методу main(). Аргументы командной строки – это информация, которая следует непосредственно за именем программы в командной строке, используемой для запуска программы. Обращаться к аргументам командной строки внутри Java-программы весьма просто – они сохраняются как строки в string-массиве. пересылаемом в maino. Например, следующая программа отображает, все аргументы командной строки, с которыми она вызывается:
// Показать все аргументы командной строки, class CommandLine {
public static void main(String args[]) { forfint i=0; i<args.length; i++)
System.out.println("args[" + i + "]: " + args[i]); } }
Попытайтесь выполнить эту программу (после ее компиляции), запустив интерпретатор Java, как показано в следующей командной строке:
Java CoramandLine это тест к программе 100 -1
После этого должен появиться такой вывод:
args[0] это
args[1] тест
args[2] к
args[3] программе
args[4] 100
args[5] -1
Все аргументы командной строки пересылаются как строки. Вы должны преобразовать числовые значения к их внутренним формам вручную (см. гл. 14).
Наследование
Наследование – один из краеугольных камней объектно-ориентированного программирования, потому что оно позволяет создавать иерархические классификации. Используя наследование, можно создать главный класс, который определяет свойства, общие для набора связанных элементов. Затем этот класс может быть унаследован другими, более специфическими классами, каждый из которых добавляет те свойства, которые являются уникальными для него. В терминологии Java класс, который унаследован, называется суперклассом (superclass). Класс, который выполняет наследование, называется подклассом (subclass). Поэтому подкласс – это специализированная версия суперкласса. Он наследует все переменные экземпляра и методы, определенные суперклассом, и прибавляет свои собственные уникальные элементы.
Основы наследования
Чтобы наследовать класс, нужно просто включить определение одного класса в другое, используя ключевое слово extends. Чтобы увидеть, как это делается, начнем с короткого примера. Следующая программа создает суперкласс с именем а и подкласс с именем в. Обратите внимание, как используется ключевое слово extends, чтобы создать подкласс а.
// Простой пример наследования.
// Создать суперкласс, class A { int i, j;
void showij () {
System.out.println("i и j: " + i + " " + j); } }
II Создать подкласс расширением класса А. class В extends A {
int k;
void showk() {
System.out.println("k: " + k); } void 3um() {
System.out.println("i+j+k: " + (i+j+k)); } }
class Simplelnheritance {
public static void main(String args[]) { A superOb = new A(); В subOb = new В() ;
// Суперкласс может быть использован сам по себе.
superOb.i = 10;
superOb.j = 20;
System.out.println("Содержимое superOb: ");
superOb.showij() ;
System.out.println() ;
/* Подкласс имеет доступ ко всем public-членам
его суперкласса. */ subOb.i = 7; subOb. j = 8; subOb.k = 9;
System.out.println("Содержимое of subOb: "}; subOb.showij(); subOb.showk(); System, out.println();
System.out.println("Сумма i, j и k в subOb:"}; subOb.sumO ; } }
Подкласс в включает все члены его суперкласса д. Вот почему объект зиьоь может обращаться к i и j и вызывать showijo. Поэтому же внутри sum о можно прямо ссылаться на i и j, как если бы они были частью в.
Хотя а – суперкласс для в, он тоже полностью независимый, автономный класс. Роль суперкласса для некоторого подкласса не означает, что этот суперкласс не может использоваться сам по себе. Более того, подкласс может быть суперклассом для другого подкласса.
Вывод этой программы:
Содержимое supe rOb: i и j : 10 20
Содержимое subOb: i и j: 7 8 k: 9
Сумма i, j и k в subOb: i+j+k: 24
Ниже показана общая форма объявления класса, который наследует суперкласс:
class subclass-name extends superclass-name {