ООП — Об’єктно-орієнтоване програмування — Що це таке?

Вступ до об'єктно-орієнтованого програмування

Об'єктно-орієнтоване програмування (OOP) дозволяє моделювати програми таким чином, щоб вони були більш читабельними, зручними для підтримки та розширення, використовуючи об'єкти реального світу. Оскільки Java підтримує принципи OOP, навчання таким основним поняттям, як наслідування, інкапсуляція, поліморфізм та абстракція, дає великі переваги у процесі розробки програмного забезпечення.

Нижче ви знайдете інформацію та приклади щодо цих понять.

Класи (Classes)

Клас — це шаблон або модель для опису об'єктів із подібними властивостями. Класи містять характеристики (поля або змінні) та поведінку (методи).

Уявімо клас "Шеф-кухар". Шеф-кухар має різні характеристики, як ім'я, вік, одяг, інгредієнти, які він використовує. Ці дані ми можемо визначити заздалегідь. Це його характеристики.

Його поведінка включає дії, як приїхати на роботу, приготувати їжу, піти на перерву, звільнитися. Це його поведінка.

Замість того, щоб для кожного шеф-кухаря писати інструкції "приходь в цей час", "йди в цей час", або тримати окремі файли для кожного шефа, ми можемо додати поведінку до класу шеф-кухаря і за допомогою одного методу зберігати його характеристики. Це дозволяє нам значно спростити роботу.

Коли ми маємо 2 шеф-кухарів в ресторані, все можна обробити вручну. Але що, якщо у нас є 20 000 ресторанів і 50 000 шеф-кухарів? У таких масштабах класи дозволяють зекономити час і зусилля в нашому коді.

Чому це важливо?

  • Повторне використання: Класи дозволяють створювати кілька об'єктів подібної структури.
  • Структурованість: Дає можливість моделювати реальні об'єкти у програмі.
  • Зручність для підтримки: Розбиваючи код на модульні частини, можна змінювати їх окремо.

Приклад:

У компанії з 30 000 автомобілів, замість того щоб для кожного автомобіля писати код, який каже "2025 рік, жовтий колір, вантажівка працює", ми можемо використовувати дані, прив'язані до ID автомобіля, та обробляти цю інформацію через вже написаний метод.

public class Araba {  
 // Характеристики  
 String renk;  
 String model;  
 int yil;
// Поведінка (методи)  
 public void sur() {  
 System.out.println("Автомобіль рухається");  
 }  
}

Об'єкти (Objects) та екземпляри (Instances)

Що таке об'єкт (Object)?

Об'єкт — це конкретний екземпляр класу, створений в пам'яті. Кожен об'єкт, що створюється за допомогою визначеного класу, може використовувати властивості та методи цього класу.

Уявімо, що ми відкрили ресторан і хочемо записати такі дані для кожного шеф-кухаря, як ім'я, прізвище та заробітну плату. Перший запис для Ахмета стане нашим об'єктом.

Що таке екземпляр (Instance)?

Термін "екземпляр" (Instance) позначає конкретний об'єкт класу. У Java для створення екземплярів класів ми використовуємо ключове слово new.

Приклад:

public class Test {  
 public static void main(String[] args) {  
 // Створення об'єкта (екземпляра) класу 'Araba'  
 Araba benimArabam = new Araba();  
 benimArabam.renk = "Червоний";  
 benimArabam.model = "Toyota";  
 benimArabam.yil = 2021;  

 // Виклик методу  
 benimArabam.sur();  
 }  
}

У цьому прикладі об'єкт benimArabam створений на основі класу Araba і має доступ до відповідних властивостей і поведінки.

4. Методи (Methods)

Методи — це функції, які визначають поведінку об'єкта. Методи класу визначають, що може робити об'єкт цього класу. Вони описують конкретні дії, які об'єкт може виконувати, наприклад, обробка даних, виконання розрахунків або виведення результатів.

Як приклад, розглянемо метод для розрахунку заробітної плати. У ресторані працюють співробітники, і кожен з них отримує базову зарплату в залежності від виконуваної роботи. Також вони можуть отримувати чайові та бонуси за виконану роботу. Ми можемо використовувати метод для розрахунку заробітної плати кожного працівника або для всіх одночасно, використовуючи дані про кількість відпрацьованих днів.

public class Restoran {  
 // Метод для розрахунку зарплати  
 public double maasHesapla(int gunSayisi, double bazMaas, double bahsis, double bonus) {  
 return bazMaas + (gunSayisi * bahsis) + bonus;  
 }  
}

# Методи дозволяють нам підготувати виконувані операції заздалегідь, тому нам не потрібно знову і знову прописувати, що саме потрібно обчислювати.

## Чому це важливо?

- **Зменшує дублювання коду:** Використовуючи методи для визначених операцій, ми можемо повторно застосовувати їх у різних частинах програми.
- **Модульність:** Код стає більш читабельним і легким для керування завдяки розбиттю на функціональні частини.
- **Зручність для підтримки:** Легше знаходити та виправляти помилки, а також виконувати вдосконалення.

## Приклад:

public class Matematik {
// Метод для обчислення суми двох чисел
public int topla(int a, int b) {
return a + b;
}
}
```

public class TestMatematik {  
 public static void main(String[] args) {  
 Matematik matematik = new Matematik();  
 int sonuc = matematik.topla(5, 3);  
 System.out.println("Сума: " + sonuc); // Виведення: Сума: 8  
 }  
}

5. Додаткові поняття та приклади з реального життя

5.1 Статичні (Static) члени

Опис:
Члени static визначаються на рівні класу і можуть бути доступні без створення екземпляра (instance) класу. Ці члени використовуються для представлення спільних даних або операцій, які мають бути доступні для всіх об'єктів класу.

Приклад з реального життя:
Інформація про назву школи, яка є спільною для всіх студентів, не повинна бути прив'язана до кожного екземпляра студента, а повинна бути визначена як статичне поле класу "Школа". Так само, ім'я, номер рахунку, дата народження або стать працівників ресторану можуть бути визначені як статичні.

Приклад коду:

public class Okul {  
 public static String okulAdi = "MyOracle University";  

 public static void okulBilgisiGoster() {  
 System.out.println("Назва школи: " + okulAdi);  
 }  
}
public class Test {  
 public static void main(String[] args) {  
 // Статичні члени викликаються безпосередньо через клас.  
 Okul.okulBilgisiGoster();  
 }  
}

5.2 Інкапсуляція (Encapsulation)

Інкапсуляція полягає в захисті внутрішніх даних об'єкта від прямого доступу ззовні. Зазвичай характеристики визначаються як private, а доступ до них здійснюється через методи getter та setter. Цей підхід важливий для забезпечення цілісності та безпеки даних.

Приклад з реального життя:
У банківському рахунку, замість того, щоб дозволити змінювати баланс без перевірок, ми контролюємо зміни через певні правила (наприклад, неможливо зняти більше грошей, ніж на рахунку). Це забезпечує інкапсуляція.

Інкапсуляція гарантує, що лише ми маємо доступ до даних у базі та можемо контролювати методи обробки, запобігаючи зовнішньому впливу і роблячи операції більш безпечними.

Приклад коду:

public class BankaHesabi {  
 private double bakiye;  

 public BankaHesabi(double ilkBakiye) {  
 this.bakiye = ilkBakiye;  
 }  

 public double getBakiye() {  
 return bakiye;  
 }  

 public void paraYatir(double miktar) {  
 if (miktar > 0) {  
 bakiye += miktar;  
 }  
 }  

 public void paraCek(double miktar) {  
 if (miktar > 0 && bakiye >= miktar) {  
 bakiye -= miktar;  
 }  
 }  
}
public class TestHesap {  
 public static void main(String[] args) {  
 BankaHesabi hesap = new BankaHesabi(1000);  
 hesap.paraYatir(500);  
 hesap.paraCek(200);  
 System.out.println("Актуальний баланс: " + hesap.getBakiye());  
 }  
}

5.3 Наслідування (Inheritance) та Поліморфізм (Polymorphism)

Опис:

  • Наслідування (Inheritance): Це процес, коли один клас успадковує властивості та методи іншого класу. Це дозволяє зменшити дублювання коду та створювати ієрархічні структури.
  • Поліморфізм (Polymorphism): Це можливість того, що один і той самий виклик методу може вести себе по-різному для різних об'єктів.

Приклад з реального життя:
Уявімо ієрархію транспортних засобів.
Araba sınıfı genel özellikleri (örneğin, sürme davranışı) tanımlarken, ElektrikliAraba ya da BenzinliAraba gibi alt sınıflar, kendilerine özgü özellikler (örneğin, şarj etme, benzin tüketimi) ekleyebilir ve metodu yeniden tanımlayarak farklı davranışlar sergileyebilir.

Örnek Kod:

public class Araba {  
 public void sur() {  
 System.out.println("Araba sürülüyor");  
 }  
}
public class ElektrikliAraba extends Araba {  
 // Overriding: Üst sınıfın metodunu yeniden tanımlama  
 @Override  
 public void sur() {  
 System.out.println("Elektrikli araba sessizce sürülüyor");  
 }  

 public void sarjEt() {  
 System.out.println("Elektrikli arabanın şarjı yapılıyor");  
 }  
}public class TestAraba {  
 public static void main(String[] args) {  
 Araba klasikAraba = new Araba();  
 Araba elektrikliAraba = new ElektrikliAraba();  

 klasikAraba.sur(); // Çıktı: Araba sürülüyor  
 elektrikliAraba.sur(); // Çıktı: Elektrikli araba sessizce sürülüyor  
 }  
}

Ця стаття містить основні концепції, які ви вивчите в рамках курсу Java Foundations Training, включаючи базові елементи такі як клас (class), об'єкт/екземпляр (object/instance) і метод (method), а також більш складні теми, такі як статичні члени (static members), інкапсуляція (encapsulation), наслідування (inheritance) та поліморфізм (polymorphism).

Сподіваюсь, вам було цікаво прочитати. До зустрічі в наступній статті.

Англійська версія

Introduction to Object-Oriented Programming

Об'єктно-орієнтоване програмування (OOP) дозволяє моделювати реальні об'єкти, що робить програми більш читабельними, зручними для обслуговування та розширюваними. Використання принципів OOP у Java, таких як наслідування (inheritance), інкапсуляція (encapsulation), поліморфізм (polymorphism) та абстракція (abstraction), надає значні переваги в процесі розробки програмного забезпечення. Далі ви знайдете інформацію та приклади щодо цих концепцій.

Класи (Classes)

Клас — це шаблон, який використовується для визначення об'єктів з подібними характеристиками. Класи містять властивості (поля або змінні) та поведінку (методи). Розглянемо клас "шеф". Шеф має різні атрибути, такі як ім'я, вік, одяг і використовувані інструменти. Ми знаємо ці атрибути заздалегідь. Це його властивості. Його поведінка включає в себе: приходити на роботу, готувати, робити перерви та залишати роботу. Це його поведінка. Замість того щоб писати, в який час кожен шеф повинен приходити і йти, чи вести окремі файли для кожного шефа, додавання поведінки до класу шефа дозволяє управляти його властивостями через єдиний метод реєстрації. У ресторані з двома шефами все можна робити вручну. Але що, якщо у нас є 20,000 ресторанів по всьому світу та 50,000 шефів? На такому масштабі використання класів в коді заощаджує і час, і зусилля.

Чому це важливо?
- Перевикористовуваність (Reusability): Класи дозволяють створювати декілька об'єктів з подібною структурою.
- Організація (Organization): Дозволяє моделювати реальні сутності в програмі.
- Легкість обслуговування (Maintenance Ease): Розділення коду на модульні частини дозволяє легше вносити зміни.

Приклад: Замість того, щоб писати код, що кожен вантажівка в парку з 30,000 машин — це жовтий автомобіль моделі 2025 року, який зараз працює, ми використовуємо інформацію, пов'язану з ідентифікатором транспортного засобу, щоб ефективно отримувати доступ до класової інформації з меншою кількістю рядків і процесів.

public class Car {  
 // Властивості  
 String color;  
 String model;  
 int year;  
 // Поведінка (методи)  
 public void drive() {  
 System.out.println("The car is being driven");  
 }  
}

Об'єкти та екземпляри (Objects and Instances)

Що таке об'єкт?
Об'єкт — це конкретний екземпляр класу, створений в пам'яті. Кожен об'єкт, створений на основі класу, може використовувати властивості та методи цього класу. Припустимо, ми відкрили ресторан і будемо реєструвати такі дані, як ім'я, прізвище та зарплата для шефів. Перша запис про шефа Ахмеда тепер стане для нас об'єктом.

Що таке екземпляр?
Термін "екземпляр" позначає конкретний приклад класу.
В Java ми створюємо екземпляри класів за допомогою ключового слова new.

Приклад:

public class Test {  
 public static void main(String[] args) {  
 // Створення об'єкта (екземпляра) з класу 'Car'  
 Car myCar = new Car();  
 myCar.color = "Red";  
 myCar.model = "Toyota";  
 myCar.year = 2021;  

 // Виклик методу  
 myCar.drive();  
 }  
}

У цьому прикладі об'єкт myCar створений на основі класу Car і може використовувати відповідні властивості та поведінку.

Методи (Methods)

Методи визначають поведінку об'єкта. Методи класу визначають, що об'єкт може робити. Як функціональні одиниці, вони визначені для виконання певної операції, такої як обробка даних, виконання обчислень або виведення результатів.

Чому це важливо?
- Зменшення коду (Code Reduction): Визначаючи певні операції в методах, ви можете використовувати їх там, де це необхідно.
- Модульність (Modularity): Покращує читабельність і керованість коду в рамках функціональних частин.
- Легкість обслуговування (Maintenance Ease): Виправлення помилок і покращення стають простішими.

Приклад:

public class Mathematics {  
 // Метод для обчислення суми двох чисел  
 public int add(int a, int b) {  
 return a + b;  
 }  
}  
public class TestMathematics {  
 public static void main(String[] args) {  
 Mathematics math = new Mathematics();  
 int result = math.add(5, 3);  
 System.out.println("Sum: " + result); // Вивід: Sum: 8  
 }  
}

Додаткові концепції та реальні приклади

5.1 Статичні члени (Static Members)

Визначення: Статичні члени визначаються на рівні класу та можуть бути доступні без створення екземпляра класу. Ці члени використовуються для представлення загальних даних або операцій для всіх об'єктів.

Реальний приклад: Назва школи, яка спільна для всіх учнів цієї школи, не є властивістю кожного учня, а є статичною властивістю класу школи. Точно так само інформація, як імена, номери рахунків, дати народження та статі працівників ресторану, може бути визначена статично.

Приклад коду:

public class School {  
 public static String schoolName = "MyOracle University";  

 public static void showSchoolInfo() {  
 System.out.println("School Name: " + schoolName);  
 }  
}  
public class Test {  
 public static void main(String[] args) {  
 // Статичні члени викликаються безпосередньо з класу.  
 School.showSchoolInfo();  
 }  
}

5.2 Інкапсуляція (Encapsulation)

Інкапсуляція захищає внутрішні дані об'єкта від прямого зовнішнього доступу. Зазвичай властивості встановлюються як приватні і доступні через геттерні та сетерні методи. Цей підхід важливий для цілісності даних та безпеки.

Реальний приклад: У банківському рахунку баланс не повинен змінюватися безпосередньо, а повинен контролюватися через певні правила (наприклад, неможливість негативних зняттів). Це досягається за допомогою інкапсуляції. Ця функція гарантує, що дані в нашій базі даних можуть бути змінені лише через методи, які ми визначаємо і контролюємо, обмежуючи можливість зовнішнього втручання і роблячи процеси більш безпечними.

Приклад коду:

public class BankAccount {  
 private double balance;  

 public BankAccount(double initialBalance) {  
 this.balance = initialBalance;  
 }  

 public double getBalance() {  
 return balance;  
 }  

 public void deposit(double amount) {  
 if (amount > 0) {  
 balance += amount;  
 }  
 }  

 public void withdraw(double amount) {  
 if (amount > 0 && balance >= amount) {  
 balance -= amount;  
 }  
 }  
}  
public class TestAccount {  
 public static void main(String[] args) {  
 BankAccount account = new BankAccount(1000);  
 account.deposit(500);  
 account.withdraw(200);  
 System.out.println("Current balance: " + account.getBalance());  
 }  
}

5.3 Наслідування (Inheritance) та Поліморфізм (Polymorphism)

Визначення:
- Наслідування (Inheritance): Один клас успадковує властивості та методи іншого класу. Це зменшує дублювання коду та дозволяє створювати ієрархічні структури.
Поліморфізм (Polymorphism): Один і той самий виклик методу може проявляти різну поведінку в різних об'єктах.

Реальний приклад: Розглянемо ієрархію транспортних засобів. Хоча клас Car визначає загальні властивості (наприклад, поведінка при їзді), підкласи, такі як ElectricCar або GasCar, можуть додавати специфічні властивості (наприклад, зарядка, витрата пального) і переписувати метод, щоб проявляти різну поведінку.

Приклад коду:

 // Батьківський клас  
public class Car {  
 public void drive() {  
 System.out.println("The car is being driven");  
 }  
}  
 // Підклас (успадкований)  
public class ElectricCar extends Car {  
 // Перевизначення: Переписування методу батьківського класу  
 @Override  
 public void drive() {  
 System.out.println("The electric car is being driven quietly");  
 }  

 public void charge() {  
 System.out.println("The electric car is being charged");  
 }  
}  
public class TestCar {  
 public static void main(String[] args) {  
 Car classicCar = new Car();  
 Car electricCar = new ElectricCar();  

 classicCar.drive(); // Вивід: The car is being driven  
 electricCar.drive(); // Вивід: The electric car is being driven quietly  
 }  
}

У цій статті я коротко познайомив вас з основними концепціями, які ви вивчатимете під час навчання Java Foundations, такими як клас, об'єкт/екземпляр і метод, а також з більш складними темами, такими як статичні члени, інкапсуляція, наслідування та поліморфізм. Сподіваюся, вам було цікаво прочитати. До наступної статті бажаю вам успіхів.

Німецька версія (Deutsche Fassung)

Вступ до об'єктно-орієнтованого програмування (Object-Oriented Programming, OOP)

Об'єктно-орієнтоване програмування (OOP) дозволяє моделювати об'єкти реального світу, що робить програми більш читабельними, обслуговуваними та розширюваними. Оскільки Java підтримує принципи OOP, вивчення основних концепцій, таких як наслідування, інкапсуляція, поліморфізм і абстракція, має значні переваги у процесі розробки програмного забезпечення.

Нижче наведено інформацію та приклади цих концепцій:

Класи (Classes)

Клас — це шаблон або схема, яка використовується для визначення об'єктів з подібними властивостями. Класи містять властивості (поля або змінні) та поведінку (методи).

Розглянемо клас кухаря. Кухар має різні атрибути, такі як ім'я, вік, одяг і використані інструменти. Ці характеристики ми знаємо заздалегідь і визначаємо. Це його властивості.

Його поведінка включає прихід на роботу, приготування їжі, перерви та вихід з роботи. Це його поведінка.

Замість того, щоб для кожного кухаря окремо писати, коли йому потрібно прийти та піти, або вести окремі файли для кожної властивості кухаря, додавання поведінки до класу кухаря дозволяє нам керувати його властивостями через єдиний метод файлу.

У ресторані з двома кухарями ми можемо все управляти вручну.
Але що буде, якщо у нас є 20 000 ресторанів і 50 000 кухарів по всьому світу? У такому масштабі класи надають нам як заощадження часу, так і простіший спосіб роботи.

Чому це важливо?

Повторне використання: Класи, які ви створюєте, дозволяють створювати кілька об'єктів з подібною структурою.

Створення порядку: Вони дозволяють моделювати реальні сутності в межах програми.

Зручність обслуговування: Поділяючи код на модульні частини, ви можете вносити зміни до кожної частини окремо.

Приклад:

У компанії з 30 000 автомобілів ми можемо, замість того, щоб окремо писати для кожного автомобіля, що жовтий вантажівка моделі 2025 зараз працює, використовувати ідентифікатор транспортного засобу для отримання інформації про клас з меншими витратами рядків і обчислень і обробити її за допомогою підготовленого методу.

public class Auto {  
 // Властивості  
 String farbe;  
 String modell;  
 int jahr;  
 // Поведінка (Методи)  
 public void fahren() {  
 System.out.println("Das Auto wird gefahren");  
 }  
}

Об'єкти (Objects) та Інстанції (Instances)

Що таке об'єкт?

Об'єкт — це конкретна інстанція (екземпляр) класу, яка була створена в пам'яті. Кожен об'єкт, створений за допомогою визначення класу, може використовувати властивості та методи цього класу.

Ми відкрили наш ресторан і будемо зберігати такі дані, як імена, прізвища та розрахунки заробітної плати для наших кухарів. Перший запис від Ахмета Аби тепер буде для нас об'єктом.

Що таке інстанція?

Термін "інстанція" означає конкретний приклад класу. У Java ми створюємо інстанції класів за допомогою ключового слова new.

Приклад:

public class Test {  
 public static void main(String[] args) {  
 // Створення об'єкта (інстанції) класу 'Auto'  
 Auto meinAuto = new Auto();  
 meinAuto.farbe = "Rot";  
 meinAuto.modell = "Toyota";  
 meinAuto.jahr = 2021;
// Виклик методу  
 meinAuto.fahren();  
 }  
}

У цьому прикладі об'єкт meinAuto, який створено від класу Auto, може використовувати відповідні властивості та поведінку.

Методи (Methods)

Методи — це функції, які визначають поведінку об'єкта. Методи класу визначають, що може робити об'єкт. Як функціональні одиниці, вони створені для виконання певних операцій, наприклад, для обробки даних, виконання обчислень або виведення результатів.

Методи можна розглядати як розрахунок заробітної плати: у нас є співробітники в ресторані, і ці співробітники мають основну зарплату залежно від їх позиції. Подумаймо також про чайові та бонуси, які вони отримують залежно від днів, які вони працювали. Ми можемо обчислити заробітну плату всіх співробітників за допомогою методу розрахунку заробітної плати або обчислити зарплату одного співробітника.
Метод готує для нас операції, які потрібно обчислити, щоб нам не доводилось кожного разу знову писати, що саме потрібно обчислити.

Чому це важливо?

Зменшення повторення коду: Визначаючи певні операції в методах, ви можете використовувати їх всюди, де це потрібно.

Модульність: Читабельність і керованість коду покращуються, коли він розбитий на функціональні частини.

Зручність обслуговування: Виправлення помилок і подальший розвиток простіші для виконання.

Приклад:

public class Mathematik {  
 // Метод, який обчислює суму двох чисел  
 public int addiere(int a, int b) {  
 return a + b;  
 }  
}  
public class TestMathematik {  
 public static void main(String[] args) {  
 Mathematik mathematik = new Mathematik();  
 int ergebnis = mathematik.addiere(5, 3);  
 System.out.println("Summe: " + ergebnis); // Вивід: Summe: 8  
 }  
}

Додаткові концепти та приклади з реального життя

5.1 Статичні (Static) члени

Визначення:

Статичні члени визначаються на рівні класу та можуть бути викликані без створення інстанції цього класу. Ці члени використовуються для представлення спільних даних або операцій між усіма об'єктами.

Приклад з реального життя:

Інформація про назву школи, яка спільна для всіх учнів, не прив'язується до кожного учня, а визначається як статична властивість у класі школи. Або такі дані, як ім'я, номер рахунку, дата народження та стать співробітників ресторану можуть бути визначені як статичні.

Приклад коду:

public class Schule {  
 public static String schulName = "MyOracle University";
public static void schulInfoAnzeigen() {  
 System.out.println("Schulname: " + schulName);  
 }  
}  
public class Test {  
 public static void main(String[] args) {  
 // Статичні члени викликаються безпосередньо через клас.  
 Schule.schulInfoAnzeigen();  
 }  
}

5.2 Інкапсуляція (Encapsulation)

Інкапсуляція захищає внутрішні дані об'єкта від прямого зовнішнього доступу. Зазвичай властивості визначаються як приватні, а методи доступу (Getter та Setter) створюються для них. Цей підхід важливий з точки зору цілісності та безпеки даних.

Приклад з реального життя:

На банківському рахунку баланс не повинен змінюватися безпосередньо, а повинен контролюватися (наприклад, не можна знімати негативні суми). Це стає можливим завдяки інкапсуляції.

Ця особливість дозволяє обробляти дані, що зберігаються в базі даних, лише за допомогою методів, які ми визначаємо та контролюємо. Вона обмежує можливість зовнішнього втручання і робить операції більш безпечними.

Приклад коду:

public class Bankkonto {  
 private double saldo;
public Bankkonto(double anfangsSaldo) {  
 this.saldo = anfangsSaldo;  
 } public double getSaldo() {  
 return saldo;  
 } public void geldEinzahlen(double betrag) {  
 if (betrag > 0) {  
 saldo += betrag;  
 }  
 } public void geldAbheben(double betrag) {  
 if (betrag > 0 && saldo >= betrag) {  
 saldo -= betrag;  
 }  
 }  
}  
public class TestKonto {  
 public static void main(String[] args) {  
 Bankkonto konto = new Bankkonto(1000);  
 konto.geldEinzahlen(500);  
 konto.geldAbheben(200);  
 System.out.println("Aktueller Saldo: " + konto.getSaldo());  
 }  
}

5.3 Спадкування (Inheritance) та Поліморфізм (Polymorphism)

Визначення:

Спадкування (Inheritance): Клас успадковує властивості та методи іншого класу. Це зменшує повторення коду та дозволяє створювати ієрархічні структури.

Поліморфізм (Polymorphism): Один і той самий виклик методу може мати різну поведінку для різних об'єктів.

Приклад з реального життя:

Подумайте про ієрархію транспортних засобів.
Поки клас Auto визначає загальні характеристики (наприклад, поведінку при водінні), підкласи, такі як Elektroauto або Benzinerauto, можуть додавати специфічні характеристики (наприклад, зарядка, витрати пального) і переробляти методи для демонстрації різної поведінки.

Приклад коду:

 // Батьківський клас  
 public class Auto {  
 public void fahren() {  
 System.out.println("Автомобіль їде");  
 }  
}  
// Підклас...  
public class Elektroauto extends Auto {  
 // Перезапис: Перевизначення методу батьківського класу  
 @Override  
 public void fahren() {  
 System.out.println("Електричний автомобіль їде тихо");  
 }
public void laden() {  
 System.out.println("Електричний автомобіль заряджається");  
 }  
}  
public class TestAuto {  
 public static void main(String[] args) {  
 Auto klassischesAuto = new Auto();  
 Auto elektroAuto = new Elektroauto(); klassischesAuto.fahren(); // Вивід: Автомобіль їде  
 elektroAuto.fahren(); // Вивід: Електричний автомобіль їде тихо  
 }  
}

У цій статті я надав коротке введення в основні концепції, які ви вивчатимете під час тренінгу Java Foundations, такі як класи, об'єкти/екземпляри та методи, а також більш складні теми, як статичні члени, інкапсуляція, спадкування та поліморфізм.

Сподіваюся, вам сподобалося читати. До зустрічі в наступній статті.

Перекладено з: NYP — Object Oriented Programming — Was ?

Leave a Reply

Your email address will not be published. Required fields are marked *