> For the complete documentation index, see [llms.txt](https://programmingfundamental.gitbook.io/programmingwithjava/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://programmingfundamental.gitbook.io/programmingwithjava/obektno-orientirano-programirane-1-chast/laboratorno-uprazhnenie-2/obekt.md).

# Обект

**Обект** наричаме екземпляр(инстанция) създаден по дефиницията на даден клас. Когато един обект е създаден по описанието на даден клас, казваме, че **обектът е от тип "името на този клас"**.

Обекта е основна единица на Обектно-ориентираното програмиране и представлява реалните житейски субекти. Типична обектно ориентирани програми съдържат много обекти, които взаимодействат чрез извикване на методи. Обект се състои от :

1. **Състояние -** отразява де в свойствата на обекта.
2. **Поведение -** предоставя се чрез методите на обект.
3. **Идентификатор -** дава уникално име на обект и възможноста на един обект да взаимодейства с други обекти.

#### Инициализация на обект

‎Когато се създаде обект от клас, се казва, че класът е ‎**‎инициализиран**. Всички екземпляри споделят атрибутите и поведението на класа. Но стойностите на тези атрибути са уникални за всеки обект. Един клас може да има произволен брой екземпляри.‎

```
public static void main(String[] args)
{
    Dog tuffy = new Dog("tuffy","papillon", 5, "white");
    System.out.println(tuffy.toString());
}
```

#### Сравнение на обекти

Обектите могат да се сравняват по два начина, референция и стойност

Сравнение по референция, проверява адресите на обектите в паметта

```
k9 == rex;
```

Сравнението по стойност, проверява еднаквост на стойностите или стойност на атрибутите на обекта.

```
k9.equals(rex);
```
