Программирование на JAVA
Меню :
Стартовая
Основы программирования
Программирование на JAVA
Программирование на C++
Программирование на Pascal
Задачи по программированию
Навигация
Лекция 1. Что такое Java? История
создания
Лекция
2. Основы объектно-ориентированного программирования
Лекция 7. Преобразование типов
Лекция 8. Объектная модель в Java
Лекция
10. Операторы и структура кода. Исключения
Реклама :
Сайдинг - 127 р/м2 - сайдинг nailite.
На плане города Брокерские Услуги 109028, Москва, Хохловский пер. Волгоград.
Этот набор определяет, какой из родительских конструкторов будет использован. В приведенном примере в каждом классе имеется по два конструктора и каждый конструктор в наследнике обращается к аналогичному в родителе (это довольно распространенный, но, конечно, не обязательный способ).
Проследим мысленно весь алгоритм создания объекта. Он начинается при исполнении выражения с ключевым словом new, за которым следует имя класса, от которого будет порождаться объект, и набор аргументов для его конструктора. По этому набору определяется, какой именно конструктор будет использован, и происходит его вызов. Первая строка его тела содержит вызов родительского конструктора. В свою очередь, первая строка тела конструктора родителя будет содержать вызов к его родителю, и так далее. Восхождение по дереву наследования заканчивается, очевидно, на классе Object, у которого есть единственный конструктор без параметров. Его тело пустое (записывается парой пустых фигурных скобок), однако можно считать, что именно в этот момент JVM порождает объект и далее начинается процесс его инициализации. Выполнение начинает обратный путь вниз по дереву наследования. У самого верхнего родителя, прямого наследника от Object, происходит продолжение исполнения конструктора со второй строки. Когда он будет полностью выполнен, необходимо перейти к следующему родителю, на один уровень наследования вниз, и завершить выполнение его конструктора, и так далее. Наконец, можно будет вернуться к конструктору исходного класса, который был вызван с помощью new, и также продолжить его выполнение со второй строки. По его завершении объект считается полностью созданным, исполнение выражения new будет закончено, а в качестве результата будет возвращена ссылка на порожденный объект.
Проиллюстрируем этот алгоритм следующим примером:
public class GraphicElement {
private int x, у; // положение на экране
public GraphicElement(int пх, int пу) {
super(); // обращение к конструктору родителя Object
System, out. printlnC'GraphicElement");
x=nx;
y=nx;
}
}
public class Square extends GraphicElement { private int side;
public Square(int x, int y, int nside) { super(x, y);
System.out.println("Square"); side=nside;
}
}
public class SmallColorSquare extends Square { private Color color;
public SmallColorSquare(int x, int y, Color c) { super(x, y, 5);

