Программирование на JAVA
Меню :
Стартовая
Основы программирования
Программирование на JAVA
Программирование на C++
Программирование на Pascal
Задачи по программированию
System.out.println("SmallColorSquare"); color=c;
}
}
После выполнения выражения создания объекта на экране появится следующее:
GraphicElement Square
SmallColorSquare
Выражение super может стоять только на первой строке конструктора. Часто можно увидеть конструкторы вообще без такого выражения. В этом случае компилятор первой строкой по умолчанию добавляет вызов родительского конструктора без параметров (super()). Если у родительского класса такого конструктора нет, выражение super обязательно должно быть записано явно (и именно на первой строке), поскольку необходима передача входных параметров.
Напомним, что, во-первых, конструкторы не имеют имени и их нельзя вызвать явно, только через выражение создания объекта. Кроме того, конструкторы не передаются по наследству. То есть, если в родительском классе объявлено пять разных полезных конструкторов и требуется, чтобы класс-наследник имел аналогичный набор, необходимо все их описать заново.
Класс обязательно должен иметь конструктор, иначе невозможно порождать объекты ни от него, ни от его наследников. Поэтому если в классе не объявлен ни один конструктор, компилятор добавляет один по умолчанию. Это public-конструктор без параметров и с телом, описанным парой пустых фигурных скобок. Из этого следует, что такое возможно только для классов, у родителей которых объявлен конструктор без параметров, иначе возникнет ошибка компиляции. Обратите внимание, что если затем в такой класс добавляется конструктор (не важно, с параметрами или без), то конструктор по умолчанию больше не вставляется:
/*
* Этот класс имеет один конструктор.
7
public class One {
// Будет создан конструктор по умолчанию // Родительский класс Object имеет // конструктор без параметров.
/*
* Этот класс имеет один конструктор.
7
public class Two {
// Единственный конструктор класса Second. // Выражение new Second() ошибочно! public Second(int х) { }
/*
* Этот класс имеет два конструктора.
7
public class Three extends Two { public Three() {
super(1 ); // выражение super требуется
}
public Three(int x) {
super(x); // выражение super требуется
}
}
Если класс имеет более одного конструктора, допускается в первой строке некоторых из них указывать не super, a this - выражение, вызывающее другой конструктор этого же класса.