1. Основы синтаксиса Java и принципы объектно-ориентированного программирования
Основы синтаксиса Java и принципы объектно-ориентированного программирования
Добро пожаловать в курс «Профессия Java-разработчик: с нуля до Junior». Это первая статья нашего путешествия, в котором мы пройдем путь от полного новичка до специалиста, готового к работе в индустрии. Сегодня мы заложим фундамент: разберем, как устроен язык Java, напишем первую программу и погрузимся в философию объектно-ориентированного программирования (ООП).
Что такое Java и почему она так популярна?
Java — это строго типизированный объектно-ориентированный язык программирования общего назначения. Одной из главных особенностей языка является принцип WORA (Write Once, Run Anywhere — «Пиши один раз, запускай где угодно»).
Это достигается благодаря Виртуальной машине Java (JVM). Когда вы пишете код, он компилируется не в машинный код конкретного процессора, а в универсальный байт-код. Этот байт-код затем исполняется JVM, которая установлена на устройстве пользователя.
Структура Java-программы
В Java всё является объектом (почти всё, но об этом позже). Любая программа состоит из классов. Давайте рассмотрим канонический пример «Hello, World!».
Разберем этот код построчно:
public class Main — объявление класса. Имя файла должно совпадать с именем публичного класса (в данном случае файл должен называться Main.java).public static void main(String[] args) — это точка входа в программу. Когда JVM запускает приложение, она ищет именно этот метод.System.out.println(...) — команда вывода текста в консоль.> Java чувствительна к регистру. Main и main — это разные имена. Также каждая команда должна заканчиваться точкой с запятой ;.
Переменные и типы данных
Java — язык со статической типизацией. Это значит, что вы должны объявить тип переменной до того, как начнете её использовать, и этот тип нельзя изменить в процессе работы.
Примитивные типы данных
В Java существует 8 примитивных типов данных. Они хранят простые значения и не являются объектами.
| Тип | Размер (бит) | Описание |
| :--- | :--- | :--- |
| byte | 8 | Целое число |
| short | 16 | Целое число |
| int | 32 | Целое число (самый используемый) |
| long | 64 | Большое целое число |
| float | 32 | Число с плавающей точкой |
| double | 64 | Число с плавающей точкой двойной точности |
| char | 16 | Символ Unicode |
| boolean | - | Логическое значение (true или false) |
Чтобы понять, какой диапазон значений может хранить целочисленный тип, можно воспользоваться формулой. Для типа данных размером бит диапазон значений определяется как:
где — количество бит, выделенных под тип данных, — минимальное значение, а — максимальное значение.
Например, для типа byte () диапазон будет от до .
Ссылочные типы данных
Все остальные типы в Java — ссылочные. Самый распространенный пример — String (строка).
Главное отличие: примитивная переменная хранит само значение, а ссылочная — адрес в памяти, где лежит объект.
Основы Объектно-Ориентированного Программирования (ООП)
Java построена вокруг концепции объектов. ООП позволяет моделировать реальные сущности в коде, делая его более структурированным и понятным.
Класс и Объект
Это два фундаментальных понятия, которые часто путают новички.
* Класс — это чертеж, шаблон или схема. Он описывает, какими свойствами и поведением будут обладать объекты. * Объект — это конкретный экземпляр класса, созданный по этому чертежу.
!Иллюстрация различия между классом (чертежом) и объектами (реальными воплощениями).
Пример описания класса:
Создание объекта:
Четыре кита ООП
Вся мощь объектно-ориентированного программирования держится на четырех принципах.
1. Инкапсуляция
Инкапсуляция — это сокрытие внутреннего устройства класса от внешнего мира и предоставление доступа только через специальные методы. Это защищает данные от некорректного изменения.
В Java для этого используются модификаторы доступа:
* private: доступ только внутри класса.
* public: доступ из любой части программы.
2. Наследование
Наследование позволяет создавать новый класс на основе существующего. Новый класс (наследник) перенимает все поля и методы родителя. Это позволяет избежать дублирования кода.
Используется ключевое слово extends.
3. Полиморфизм
Полиморфизм (от греч. «много форм») — это способность объектов с одинаковой спецификацией иметь различную реализацию. Простыми словами: один и тот же метод может работать по-разному для разных объектов.
Если и Dog, и Cat являются наследниками Animal, мы можем вызвать у них метод makeSound(), но собака залает, а кошка замяукает.
4. Абстракция
Абстракция — это выделение значимых характеристик объекта и игнорирование незначимых деталей. В Java это реализуется через абстрактные классы и интерфейсы.
Мы можем создать абстрактный класс Shape (Фигура), у которого есть метод getArea() (получить площадь). Мы не знаем, как считать площадь абстрактной фигуры, но мы знаем, что у конкретного Circle (Круг) или Square (Квадрат) этот метод будет реализован по своим формулам.
Например, площадь круга вычисляется как:
где — площадь, — математическая константа (примерно 3.14), а — радиус круга.
Заключение
Сегодня мы познакомились с базовым синтаксисом Java, узнали о типах данных и разобрали ключевые концепции ООП. Понимание того, чем класс отличается от объекта, и как работают инкапсуляция и наследование — это база, без которой невозможно стать профессиональным разработчиком.
В следующих статьях мы будем углубляться в каждый из этих аспектов, изучать управляющие конструкции и писать более сложный код.