T.M. SoftStudio

feci quod potui, faciant meliora potentes

Купить полную версию курса "Введение в вычисления с Java" (русскоязычная версия, лекции, тесты, лабораторные работы)

Введение в вычисления с Java. Объектно-ориентированное программирование

Неделя 3

Лекция 13

Конструктор

Теперь, когда вы увидели пример по определению класса для автомобилей, давайте вернемся и посмотрим на общую структуру объявления класса.

При попытке создать новый класс в BlueJ, вы увидите всплывающее окно, которое запрашивает имя класса. Скажем, мы хотим назвать класс, который будет создан NewClass.

После того как вы обеспечили имя класса, вы увидите шаблон для создания нового класса.

Давайте рассмотрим каждый компонент объявления класса более тщательно.

Программа начинается с некоторых комментариев, которые начинаются с косой черты, а затем двумя звездочками и заканчиваются звездочкой и косой чертой.

Все между этими разделителями будет рассматриваться как комментарии и будет игнорироваться компилятором.

Это специальный формат размещения комментария для создания особого рода документа под названием JavaDoc.

Если вы посмотрите дальше, вы увидите еще ​​один комментарий в BlueJ, который начинается с двойных косых черт.

Это еще один способ размещения комментария.

Я вернусь к теме комментариев позже, когда будем обсуждать документирование программы более подробно.

После комментариев, следующая строка начинается с ключевого слова public, а затем после ключевого слова class следует имя класса, который вы создаете. Верхний CamelCase часто используется в качестве именования классов.

Ключевое слово public является идентификатором доступа.

В примере Car, у нас был public class Car, чтобы начать определение класса.

Java определяет четыре уровня идентификаторов доступа. Их также называют модификаторы доступа.

Только public и private будут рассмотрены в этом курсе. Два других это protected и package private.

Для классов, методов, данных или полей, объявленных как public, они могут быть видны для любого класса в любом пакете. Пакеты представляют собой группы связанных классов.

Мы вернемся к этому позже. Идентификатор private указывает, что методы и данные или поля, объявленные в классе могут быть доступны только в пределах одного класса.

Классы не могут быть объявлены как private, за исключением для вложенных классов.

Основная часть определения класса заключена в фигурные скобки.

В основной части первый блок предназначен для определения переменных экземпляра, то есть, эти переменные будут связаны с конкретным экземпляром объекта в NewClass.

В примере, переменная х с типом int будет создана при создании нового объекта в NewClass и переменная будет доступна только в NewClass, потому что она объявлена как private.

Чуть позже вы увидите, что там также могут быть переменные класса или статические переменные, которые также могут быть объявлены здесь.

Далее блок программы предназначен для определения конструкторов.

Конструкторы обеспечивают экземпляры объекта, которые будет созданы из шаблона класса.

Конструкторы объявляются аналогично тому, как объявляются методы, но имя класса используется в качестве названия конструктора, в этом примере, имя класса NewClass используется в качестве имени конструктора.

Конструкторы используются для инициализации свойства или поля объекта. Конструктор вызывается один раз и только один раз во время создания объекта с помощью оператора new и не имеет возвращаемого типа. Я буду говорить больше о возвращаемом типе позже.

Так что вот общий синтаксис для объявления конструктора.

Он начинается с public, а затем идет имя класса и далее следует список параметров в круглых скобках или пустой список, если нет параметров.

Так, конструктор может не иметь параметров, может иметь один или несколько параметров.

Java могут различать конструкторы с различным числом параметров на основе числа параметров и их типов. Вы не можете написать два конструктора, которые имеют одинаковое количество и типы параметров для одного и того же класса, потому что Java не сможет отличить их друг от друга.

Рассмотрим конструктор для NewClass. Тело конструктора окружено фигурными скобками.

Этот конструктор не имеет параметров и просто инициализирует переменную экземпляра х=0.

В программе Car были объявлены два конструктора для одного и того же класса.

Первый без параметров и ничего не делающий конструктор.

Второй принимает один параметр типа String, и изменяет значение переменной владельца экземпляра, как указано в параметре.

Методы

Последняя часть программы состоит в определении методов.

Методы реализуют определенное поведение и действия, которые объект может выполнять.

Каждое объявление метода имеет 5 основных компонентов. Первым идет идентификатор доступа.

public метод может быть доступен для всех других классов, а доступ к private методу можно получить только в пределах одного класса.

Далее идет возвращаемый тип метода, который является типом данных значения, возвращаемого методом. Например, метод может возвращать целочисленное значение, тогда возвращаемый тип может быть одним из четырех примитивных типов целых чисел, в том числе, byte, short, int и long.

Если метод возвращает число с плавающей точкой, возвращаемый тип может быть float или double.

Кроме того, возможно, что никакое значение не возвращается методом, в этом случае используется тип void.

Далее идет имя метода. Любой допустимый идентификатор Java может быть использован в качестве имени метода. Нижний CamelCase часто используется в качестве имени метода.

Далее идет список параметров. Список параметров является списком пар тип-параметр, разделенных запятыми.

Список окружен скобками, даже если список параметров пуст.

И, наконец, идет тело метода. Тело метода окружено парой фигурных скобок.

Тело метода часто делится на две основные части, первая часть это декларация локальных переменных и вторая часть состоит из Java выражений, которые делают реальную работу.

В примере NewClass, определяется метод с именем sampleMethod. Доступность метода является public.

Тип значения, возвращаемого методом, является int.

В списке параметров существует только один параметр с типом int.

Тело метода имеет только один оператор, return х + у, где х является переменной экземпляра, объявленной в начале, и у является параметром, передаваемым в метод. Обратите внимание, что слово return здесь это ключевое слово Java.

Выражение х + у будет складывать две переменные, и результат, который имеет тип int, будет возвращаемым значением метода sampleMethod.

Если мы вернемся к примеру с автомобилем, вы обнаружите, что объявление класса Car следует той же структуре.

Оно начинается с заголовка, который определяет название класса, в этом случае, Car.

Тело объявления Car начинается с объявления переменной экземпляра.

После объявления переменных следует декларация конструктора.

Конструкторы используются для создания новых экземпляров объектов и в этом случае есть два конструктора.

Один без параметров, другой с одним параметром строкового типа.

После объявления конструкторов следуют объявления методов.

Три метода определены здесь. Два из методов void типа. Это означает, что значение не возвращается методом.

Оба метода печатают сообщение в консоли о действиях, которые они призваны выполнять.

Метод moveCar также изменяет значение одной из переменных экземпляра, счетчик километража.

Третий метод getsOdometer возвращает значение одометра, который имеет int тип.

Метод, который возвращает значение закрытого поля, часто называют getter метод.