Класове и Обекти - Сърцето на ООП
- Теория
- Код
Класове, Наследяване, и Обекти в Java 🏗️
Java е обектно-ориентиран език, и разбирането на класовете, наследяването, и обектите е ключово за създаването на ефективни програми.
Класове 📐
Класът в Java е шаблон или чертеж, който определя формата и поведението на обектите (инстанциите).
Какво Съдържа Един Клас?
- Полета (Fields): Променливите, които държат състоянието на обектите.
- Методи (Methods): Блокове код, които определят поведението на обектите.
- Конструктори (Constructors): Специални методи, които се извикват при създаване на нов обект.
Дефиниция на Клас
public class Person {
private String name;
private int age;
// Конструктор
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// Метод
public void introduce() {
System.out.println("Hi, my name is " + this.name);
}
}
Наследяване: Йерархия на Класове 👨👦
Наследяването е механизъм, чрез който един клас (наречен подклас) може да наследи полета и методи от друг клас (наречен суперклас).
Основи на Наследяването
- Подкласът наследява всички
public
иprotected
членове на суперкласа. - В Java, клас може да наследява само един суперклас (единично наследяване).
Пример за Наследяване
public class Worker extends Person {
private String jobTitle;
public Worker(String name, int age, String jobTitle) {
super(name, age);
this.jobTitle = jobTitle;
}
public void work() {
System.out.println("Working as a " + this.jobTitle);
}
}
Създаване и Използване на Обекти 🛠️
Обектите са конкретни инстанции на класове, създадени и инициализирани с new
ключовата дума и конструктора на класа.
Инициализиране на Обект
Person person = new Person("John", 30);
Извикване на Метод на Обект
person.introduce();
Интересни Факти и Съвети
- В Java, всички класове наследяват класа
Object
по подразбиране, който е върхът на класовата йерархия. - Използването на
super
е важно при наследяване, тъй като това позволява на подкласа да достъпва конструкторите и методите на своя суперклас. - Наследяването подобрява кода за повторна употреба и води до йерархична организация на класовете.
КЛАСОВЕ
Класовете са основната конструкция в обектно-ориентираното програмиране. Те дефинират шаблон, по който се създават обекти.
Прост клас:
public class Животно {
String вид;
int възраст;
public void издаваЗвук() {
System.out.println("Някакъв звук...");
}
}
Обяснение: Тук имаме клас Животно
, който има две свойства (вид
и възраст
) и един метод (издаваЗвук
).
СЪЗДАВАНЕ И ИЗПОЛЗВАНЕ НА ОБЕКТИ
Обектите са инстанции на класове. След като имаме дефиниран клас, можем да създадем множество обекти от този клас.
Животно котка = new Животно();
котка.вид = "Котка";
котка.възраст = 3;
котка.издаваЗвук(); // Извежда "Някакъв звук..."
НАСЛЕДЯВАНЕ
Наследяването позволява да създадем нов клас, който наследява свойствата и методите на друг клас.
public class Котка extends Животно {
public void издаваЗвук() {
System.out.println("Мяу, мяу!");
}
}
Котка моятаКотка = new Котка();
моятаКотка.издаваЗвук(); // Извежда "Мяу, мяу!"
Обяснение: Класът Котка
наследява класа Животно
, така че той има всички свойства и методи на Животно
. Но можем да презапишем (override) някои от методите, както направихме с издаваЗвук
в класа Котка
.
GETTER И SETTER
В Java, getter и setter са специални видове методи, използвани за защита на приватността на данните. Те предоставят контролиран достъп до свойствата на даден клас.
public class Животно {
...
private int age; // частно поле
// Getter за age, реално взимаме стойността на age
public String getAge() {
return this.age;
}
// Setter за age, задаваме стойност за Age
public void setAge(String age) {
if (age != null && !вид.isEmpty()) { // Проста проверка за валидност
this.age = age;
}
}
...
}