Лекция по основам Java. Конструкторы, уровни доступа, статические поля и методы

YOUTUBE · 26.11.2025 05:37

Ключевые темы и таймкоды

Обсуждение принципов объектно-ориентированного программирования

0:00
  • Обсуждение основных принципов объектно-ориентированного программирования, включая важность прохождения собеседования и важность быть программистом.
  • Упоминание о горбаче-коллекторе, который оказывает влияние на тестирование, особенно нагрузочное тестирование.

Создание объектов и ссылки

1:33
  • Создание объекта и его ссылка на другой объект.
  • Объяснение разницы между классом и экземпляром класса.
  • Упоминание о том, что класс - это описание, а экземпляр - это реально существующий объект.

Сборка мусора и уничтожение объектов

5:19
  • Обсуждение принципа сборки мусора в Java, когда объекты уничтожаются, если на них нет ссылок извне.
  • Пример с чертежом здания и его уничтожением после постройки всех зданий по чертежу.

Наследование и переопределение методов

7:28
  • Обсуждение возможности создания объекта класса с переопределенными методами.
  • Упоминание о том, что Java - язык строгой типизации, требующий определения всех методов перед созданием объекта.

Объекты и ссылки

9:09
  • В классе описываются поля, которые могут содержать различные значения.
  • При создании экземпляра класса, его поля инициализируются значениями по умолчанию.
  • Объекты содержат реальное состояние, которое может быть изменено через методы класса.

Полиморфизм и ссылки

12:40
  • Объекты в Java обрабатываются по ссылке, что означает, что они не являются самими объектами, а скорее ссылками на них.
  • Если объект теряет свою последнюю ссылку, он становится доступным для сбора мусора.

Уничтожение объектов

15:34
  • Объекты уничтожаются по выходу из метода или при потере последней ссылки на них.
  • Важно понимать, как работает сборщик мусора, чтобы избежать проблем с утечкой памяти.

Стенбай-режим и оптимизация

18:00
  • В стенбай-режиме, когда у программы заканчивается память, она приостанавливает все процессы и строит дерево всех объектов.
  • Это может привести к зависанию приложения на несколько секунд.
  • Чтобы избежать этого, можно выделить больше памяти при запуске приложения.

Оптимизация кода

24:09
  • Оптимизация кода должна сводиться к написанию красивого кода и проверке его производительности.
  • Если производительность не устраивает, можно использовать профайлер для определения узких мест и их оптимизации.

Диаграммы и их использование

26:32
  • Диаграммы используются для описания сложных частей логики и алгоритмов.
  • Они могут быть двух типов: класс диаграмма и скон с диаграмма.
  • Класс диаграмма показывает связи между классами, а скон с диаграмма показывает последовательность вызовов методов.

Диаграммы классов

31:29
  • В диаграмме классов описываются поля, методы и взаимосвязи между объектами.
  • Модификаторы доступа (private, protected, public) указываются в верхней части диаграммы.
  • Методы описываются в нижней части диаграммы, с указанием возвращаемого значения и параметров.
  • Взаимосвязь между объектами обозначается стрелкой без направления (без дирекшн).
  • Если объект зависит от другого объекта, стрелка направлена от зависимого объекта к зависимому.

Наследование и имплементация

37:55
  • Наследование класса от другого класса обозначается треугольной стрелкой с закрашенной полоской.
  • Имплементация интерфейса обозначается треугольной стрелкой без закрашенной полоски.
  • Если класс имплементирует интерфейс, он должен реализовать все методы, прописанные в интерфейсе.

Агрегация и композиция

41:31
  • Агрегация означает, что один объект имеет ссылки на другой объект.
  • Композиция означает, что один объект не может существовать без другого объекта.
  • В случае композиции, при уничтожении последнего объекта, все остальные объекты также будут уничтожены.

Требования к именам классов и файлов

45:43
  • В Java строгое требование: любой публичный класс должен находиться в отдельном файле с названием, соответствующим имени класса.
  • Имена полей и методов должны начинаться с маленькой буквы, кроме констант, которые пишутся с большой буквы через подчеркивание.

Константы и видимость

49:23
  • Константы должны быть объявлены с большой буквы и доступны из любого места.
  • Переменные не могут быть объявлены как константы.

Пакеты и пути к файлам

50:50
  • Пакеты должны быть указаны в первой строке кода, после слова "package".
  • Путь к файлу должен соответствовать имени пакета и быть указан в виде полного пути от корня проекта.

Преимущества жестких требований

53:14
  • Жесткие требования к именам и пакетам помогают избежать конфликтов имен и упрощают поиск и использование классов.
  • Макросы и процессоры могут быть использованы для дополнительных операций до компиляции, но они не являются обязательными.

Уровни доступа в Java

55:45
  • В Java есть четыре уровня доступа: public, protected, private и default (package-private).
  • Public означает доступ из любого места, protected - из класса и его наследников, private - только из класса, default - из пакета.

Статические поля и методы

1:04:31
  • Статические поля и методы принадлежат классу, а не экземпляру класса.
  • Статические поля и методы могут быть доступны без создания объекта класса.
  • Статические методы могут работать только со статическими полями и не могут работать с нестатическими полями или методами.

Статические методы и константы

1:10:48
  • Статические методы и константы могут быть объявлены в классе, но не могут быть объявлены в объекте.
  • Статические методы используются для создания объектов или предоставления доступа к полям.
  • Константы обычно объявляются как статические, чтобы их нельзя было изменить извне.

Конструкторы и наследование

1:16:14
  • Конструкторы - это специальные методы, которые не имеют возвращаемого значения и начинаются с большой буквы.
  • В конструкторе можно прописать что угодно, но обычно используется для инициализации полей.
  • Наследование позволяет вызвать конструктор родительского класса из конструктора дочернего класса.

Вызов конструкторов и статических методов

1:21:45
  • Статические методы могут получить доступ к конструктору класса, что позволяет создать хитроумные конструкторы.
  • Вызов конструктора родительского класса осуществляется через ключевое слово "супер".
  • Конструкторы могут быть объявлены несколько раз, и компилятор определит, какой конструктор вызвать.