Spec-Zone .ru
спецификации, руководства, описания, API
|
class содержит конструкторов, которые вызываются, чтобы создать объекты из проекта class. Объявления конструктора похожи на объявления метода — за исключением того, что они используют имя class и не имеют никакого типа возврата. Например, Bicycle
имеет одного конструктора:
public Bicycle(int startCadence, int startSpeed, int startGear) { gear = startGear; cadence = startCadence; speed = startSpeed; }
Создать новое Bicycle
объект вызывают myBike
, конструктора вызывают new
оператор:
Bicycle myBike = new Bicycle(30, 0, 8);
new Bicycle(30, 0, 8)
создает пространство в памяти для объекта и инициализирует его поля.
Хотя Bicycle
только имеет одного конструктора, у этого могли быть другие, включая конструктора без параметров:
public Bicycle() { gear = 1; cadence = 10; speed = 0; }
Bicycle yourBike = new Bicycle();
вызывает конструктора без параметров, чтобы создать новое Bicycle
объект вызывают yourBike
.
Оба конструктора, возможно, были объявлены в Bicycle
потому что у них есть различные списки параметров. Как с методами, платформа Java дифференцирует конструкторов на основе числа параметров в списке и их типах. Невозможно записать двум конструкторам, у которых есть то же самое число и тип параметров за тот же самый class, потому что платформа не была бы в состоянии сказать им обособленно. Выполнение так причины ошибка времени компиляции.
Вы не должны предоставить конструкторам для своего class, но следует быть осторожными, делая это. Компилятор автоматически обеспечивает конструктора по умолчанию без параметров для любого class без конструкторов. Этот конструктор по умолчанию вызовет конструктора без параметров суперкласса. В этой ситуации будет жаловаться компилятор, нет ли у суперкласса конструктора без параметров, таким образом, следует проверить, что это делает. Если у Вашего class нет никакого явного суперкласса, то у него есть неявный суперкласс Object
, у которого действительно есть конструктор без параметров.
Можно использовать конструктора суперкласса самостоятельно. MountainBike
class в начале этого урока сделал только это. Это будет обсуждено позже в уроке в интерфейсах и наследовании.
Можно использовать модификаторы доступа в объявлении конструктора, чтобы управлять, который другие классы могут вызвать конструктора.
MyClass
конструктор, это не может непосредственно создать MyClass
объекты.