Объектно-ориентированное программирование (ООП) относится к типу программирования, в котором программисты определяют тип данных структуры данных и тип операций, которые могут применяться к структуре данных.

Концепции ООП — Содержание

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

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

Конструкторы в Java

Принципы объектно-ориентированного программирования

  • Наследование
  • Инкапсуляция
  • Абстракция
  • Полиморфизм

1) Что такое класс?

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

Синтаксис:

class <class_name>{  
    field;  
    method;  
  }

2. Что такое объект?

Объект — это экземпляр класса. Объект в OOPS — это не что иное, как автономный компонент, состоящий из методов и свойств, которые делают данные определенного типа полезными. например, стул, велосипед, маркер, ручка, стол, автомобиль и т. д.

У объекта есть три характеристики:

  • Состояние: представляет данные (значение) объекта.
  • Поведение: представляет функциональные возможности объекта, такие как депозит, снятие средств и т. д.
  • Идентификация. Идентификация объекта обычно реализуется с помощью уникального идентификатора. Значение идентификатора не видно внешнему пользователю. Однако он используется внутри JVM для уникальной идентификации каждого объекта.

3. Конструкторы в Java

Конструктор — это блок кода, аналогичный методу. Он вызывается при создании экземпляра класса. В момент вызова конструктора в памяти выделяется память под объект. Это особый тип метода, который используется для инициализации объекта.

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

Пример :

class Student {   
  .......

  // A Constructor with no arguments
  new Student() {}
  .......
}

// Creating an object of the Student class
Student s1= new Student(); // calls Student() constructor.

Правила написания конструктора:

  • Конструктор(ы) класса должен иметь то же имя, что и имя класса, в котором он находится.
  • Конструктор в Java не может быть абстрактным, окончательным, статическим и синхронизированным.
  • Модификаторы доступа могут использоваться в объявлении конструктора для управления его доступом, т. е. какой другой класс может вызывать конструктор.

Типы конструкторов

i) Конструктор без аргументов. Конструктор без параметров называется конструктором по умолчанию. Если мы не определяем конструктор в классе, то компилятор создает конструктор по умолчанию (без аргументов) для класса. И если мы напишем конструктор с аргументами или без аргументов, то компилятор не создаст конструктор по умолчанию.

ii) Параметризованный конструктор. Конструктор с параметрами называется параметризованным конструктором. Если мы хотим инициализировать поля класса своими значениями, то используем параметризованный конструктор.

class Student{
// data members of the class.
String name;
int roll_no;
/* constructor will initialize data members with the values of passed arguments while object of that class created. */
Student(String name, int roll){
    this.name = name;
    this.roll_no = roll;
  }
}
class Learning {
public static void main (String[] args) {
// calling parameterized constructor
Geek geek1 = new Geek("John",10);
System.out.println("Student Name :" + s1.name + " , and Roll No. :" + s1.roll_no);
   }
}

Вывод:

Имя ученика: Джон, номер списка: 10

4. Принципы объектно-ориентированного программирования

Существует четыре строительных блока объектно-ориентированного программирования, а именно Наследование, Инкапсуляция, Абстракция. и Полиморфизм.

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

Наследование — это концепция, при которой все свойства одного класса могут быть унаследованы другим классом. Это помогает повторно использовать код и устанавливать отношения между разными классами.

В Java есть два типа классов

1. Родительский класс (супер или базовый класс)

2. Дочерний класс (подкласс или производный класс)

Класс, который наследует свойства, называется дочерним классом, тогда как класс, свойства которого унаследованы, называется родительским классом.

Ключевое слово, используемое для наследования, — extends, а синтаксис —

class child-class extends parent-class {  
   //methods and fields  
}

Наследование подразделяется на 4 типа:

I) Единичное наследование:

При одиночном наследовании один класс наследует свойства другого. Он позволяет производному классу наследовать свойства и поведение одного родительского класса.

Здесь класс A — это родительский класс, а класс B — ваш дочерний класс, который наследует свойства и поведение родительского класса.

Синтаксис:

class A{  
   //methods and fields  
}
class B extends A{
//methods and fields
}

II)Многоуровневое наследование:

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

Здесь A — родительский класс для B, а класс B — родительский класс для C. Таким образом, в этом случае класс C неявно наследует свойства и методы класса A вместе с классом B.

class A{  
   //methods and fields  
}
class B extends A{
//methods and fields
}
class C extends B{
//methods and fields
}

III) Иерархическое наследование:

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

Здесь класс B и C являются дочерними классами, которые наследуются от родительского класса, то есть класса A.

class A{  
   //methods and fields  
}
class B extends A{
//methods and fields
}
class C extends A{
//methods and fields
}

IV) Гибридное наследование:

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

4.2) Инкапсуляция

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

Мы можем добиться инкапсуляции в Java следующими методами

  • Объявление переменных класса как частных.
  • Предоставление общедоступных методов установки и получения для изменения и просмотра значений переменных.
class StudentCount{
   private int numOfStudents = 0;
   public void setNoOfStudents (int count){
       numOfStudents = count;
   }
   public int getNoOfStudents () {
       return numOfStudents;
   }
}
public class Learning {
   public static void main(String args[]){
      StudentCount std = new StudentCount ();
      std.setNoOfStudents(45);
      System.out.println("Number of Students : " +   std.getNoOfStudents());
    }
}

Результат: Количество студентов: 45

4.3) Абстракция

Абстракция – это процесс сокрытия деталей реализации и показа только функциональности. Есть два способа добиться абстракции в java.

я) Абстрактный класс

ii) Интерфейс

Абстрактный класс. Абстрактный класс в Java объявляется с использованием ключевого слова «abstract». Он может иметь абстрактные и неабстрактные методы. Абстрактный класс должен быть расширен, и его абстрактные методы должны быть реализованы в этом расширенном классе. Абстрактный класс может иметь конструкторы и статические методы. Мы можем достичь (от 0 до 100%) абстракции, используя абстрактные классы.

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

4.4) Полиморфизм:

Полиморфизм состоит из двух слов: «поли» означает «множество», а «морф» означает «формы». Таким образом, полиморфизм означает способность принимать множество форм. В контексте ООП можно сказать, что полиморфизм позволяет интерфейсу или методу иметь несколько реализаций.

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

i) Полиморфизм во время выполнения

ii) Полиморфизм во время компиляции