Читать книгу «Программирование на Java: Руководство для опытных разработчиков» онлайн полностью📖 — Программист — MyBook.
image

Глава 3. Объектно-ориентированное программирование на Java

3.1. Классы и объекты

В предыдущих главах мы рассмотрели основы языка Java и научились создавать простые программы. Теперь пришло время погрузиться в один из наиболее важных аспектов объектно-ориентированного программирования (ООП) – классы объекты.

Что такое классы?

Класс – это шаблон или чертеж, который определяет структуру и поведение объекта. Он представляет собой набор переменных методов, которые описывают свойства действия можно рассматривать как форму шаблон, по которому создаются объекты.

Что такое объекты?

Объект – это экземпляр класса, который имеет свои собственные значения переменных и методов. Объекты инстансы классов, которые создаются в памяти компьютера во время выполнения программы. Каждый объект свойства поведение, определенные классом, на основе которого он был создан.

Пример класса и объекта

Давайте рассмотрим простой пример. Предположим, мы хотим создать класс "Автомобиль", который имеет свойства "марка", "модель" и "год выпуска", а также метод "едет". Мы можем "Автомобиль" следующим образом:

```java

public class Автомобиль {

private String марка;

private String модель;

private int годВыпуска;

public Автомобиль(String марка, String модель, int годВыпуска) {

this.марка = марка;

this.модель = модель;

this.годВыпуска = годВыпуска;

}

public void едет() {

System.out.println("Автомобиль едет!");

}

}

```

Теперь мы можем создать объект "моиАвтомобиль" на основе класса "Автомобиль":

```java

Автомобиль моиАвтомобиль = new Автомобиль("Toyota", "Camry", 2015);

```

Объект "моиАвтомобиль" имеет свои собственные значения переменных "марка", "модель" и "год выпуска", а также метод "едет", который мы можем вызвать:

```java

моиАвтомобиль.едет(); // Вывод: Автомобиль едет!

```

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

Классы и объекты также позволяют реализовать наследование полиморфизм. Наследование позволяет создавать новые классы на основе существующих, а полиморфизм объектам иметь разные формы поведение в зависимости от контекста.

Заключение

В этой главе мы рассмотрели основы классов и объектов в Java. Мы научились создавать классы объекты, а также поняли, как они связаны между собой. следующей рассмотрим более подробно наследование полиморфизм, другие важные аспекты ООП.

3.2. Наследование и полиморфизм

В предыдущей главе мы рассмотрели основы объектно-ориентированного программирования (ООП) и познакомились с концепцией классов объектов. Теперь перейдем к двум фундаментальным понятиям ООП: наследованию полиморфизму.

Наследование

Наследование – это механизм, позволяющий создавать новые классы на основе существующих. Идея наследования заключается в том, что новый класс (подкласс) может наследовать свойства и поведение от существующего класса (суперкласса). Это позволяет избежать дублирования кода более иерархическую структуру классов.

В Java наследование реализуется с помощью ключевого слова `extends`. Например:

```java

public class Animal {

public void sound() {

System.out.println("Животное издает звук");

}

}

public class Dog extends Animal {

public void sound() {

System.out.println("Собака лает");

}

}

```

В этом примере класс `Dog` наследует от класса `Animal` и переопределяет метод `sound()`. Теперь мы можем создать объект вызвать `sound()`, который будет выводить сообщение "Собака лает".

Полиморфизм

Полиморфизм – это способность объекта принимать разные формы в зависимости от контекста. В Java полиморфизм реализуется с помощью методов, которые могут быть переопределены подклассах.

Полиморфизм бывает двух видов: статический и динамический. Статический полиморфизм происходит при компиляции, когда компилятор определяет, какой метод вызвать в зависимости от типа объекта. Динамический во время выполнения, JVM

В Java полиморфизм реализуется с помощью методов, которые объявлены в суперклассе и переопределены подклассах. Например:

```java

public class Animal {

public void sound() {

System.out.println("Животное издает звук");

}

}

public class Dog extends Animal {

public void sound() {

System.out.println("Собака лает");

}

}

public class Cat extends Animal {

public void sound() {

System.out.println("Кошка мяукает");

}

}

public class Main {

public static void main(String[] args) {

Animal animal = new Dog();

animal.sound(); // Выводит "Собака лает"

animal = new Cat();

animal.sound(); // Выводит "Кошка мяукает"

}

}

```

В этом примере мы создаем объекты классов `Dog` и `Cat`, которые наследуют от класса `Animal`. Мы затем присваиваем эти переменной `animal` типа `Animal` вызываем метод `sound()`. зависимости объекта, который присвоен `animal`, будет вызван соответствующий

Преимущества наследования и полиморфизма

Наследование и полиморфизм предоставляют несколько преимуществ, включая:

Уменьшение дублирования кода: Наследование позволяет избежать кода, создавая новые классы на основе существующих.

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

Упрощение поддержки: Наследование и полиморфизм упрощают поддержку кода, позволяя изменять поведение объектов без изменения их внутренней структуры.

В заключении, наследование и полиморфизм – это фундаментальные понятия ООП, которые позволяют создавать более иерархическую структуру классов, избегать дублирования кода повышать гибкость адаптируемость кода. следующей главе мы рассмотрим еще одно важное понятие ООП инкапсуляцию.