# Обект

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

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

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);
```
