Files
obsidian/Программирование на Java/ООП/ООП.md
T
2026-09-08 21:35:27 +03:00

3.4 KiB

Объектно-ориентированное программирование:

  • Объекты - программные модели реальных сущностей
  • Объект соединяет данные и код для обработки этих данных
  • Состояние объекта - его переменные (поля)
  • Поведение объекта - его функции (методы)
  • Объекты взаимодействуют, вызывая методы друг у друга
  • Объектно-ориентированное проектирование Класс - тип или шаблон, объект - конкретный экземпляр

Принципы ООП

  1. Абстракция - не учитываем не нужное
  2. Инкапсуляция
  3. Наследование
  4. Полиморфизм

Создание объекта - new

  • выделяет память для объекта
  • инициализирует поля объекта
  • вызывает Конструкторы
  • возвращает ссылку на готовый объект (Типы данных#Ссылочные типы данных)

Поля объекта

Объект (instance) имеет собственные значения полей

  • Для разных объектов значения полей разные
  • Это поля экземпляра (не статические) Особый вид поля - статическое (static field)
  • Статическое поле - общее для всех объектов класса
  • Его значение - одно для всего класса
  • Статическое поле - поле класса (в Metaspace - часть кучи) !Metaspace.png

Методы

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

Ссылка this

class Rectangle {
	double width; // неявно this.width
	double height; // неявно this.height
	
	double area() { // неявно double area(Rectange this) {}
		
	}
}

this - ссылка на текущий объект, у которого вызван метод Неявно передается первым параметром во все методы (кроме статических) Можно обращаться:

  • к полям класса
  • к методам класса
  • к конструкторам класса

Статический контекст

Статические методы (методы класса)

  • Не получают ссылку this
  • Можно вызывать по имени класса (без объекта)
  • Нельзя вызывать из нестатических методов
  • Не могут менять состояние объектов Статические поля и методы относятся к классу и не требуют наличия объекта Отсюда простые правила: static может обращаться только к static, non-static может и к non-static, и к static

Дополнительно: Блоки инициализации Вложенные классы