← Назад к вопросам

Что такое класс, объект и интерфейс в Java?

1.0 Junior🔥 131 комментариев
#Soft Skills и карьера

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Класс, объект и интерфейс в Java

Эти три понятия являются фундаментом объектно-ориентированного программирования в Java. Давайте разберемся в их различиях и взаимосвязи.

Класс

Класс — это шаблон, описание или чертеж для создания объектов. Это абстрактная сущность, которая определяет структуру и поведение объектов.

Класс содержит:

  • Поля (переменные) — данные, которые хранит объект
  • Методы — действия, которые может выполнять объект
  • Конструктор — инициализацию объекта
public class Dog {
    private String name;
    private int age;
    
    public Dog(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    public void bark() {
        System.out.println(name + " лает!");
    }
    
    public int getAge() {
        return age;
    }
}

Это класс — это просто определение, еще нет конкретной собаки.

Объект

Объект — это конкретный экземпляр класса, созданный в оперативной памяти. Это реальное воплощение шаблона с конкретными данными.

Dog myDog = new Dog("Барон", 5);
Dog neighborDog = new Dog("Тоби", 3);

myDog.bark();  // Барон лает!
neighborDog.bark();  // Тоби лает!

Здесь:

  • myDog и neighborDog — два разных объекта одного класса Dog
  • Каждый объект имеет свои данные (name, age)
  • Они существуют в памяти и имеют разные адреса (ссылки)

Интерфейс

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

public interface Animal {
    void makeSound();  // просто сигнатура
    int getAge();
    String getName();
}

Класс может реализовать интерфейс:

public class Dog implements Animal {
    private String name;
    private int age;
    
    public Dog(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    @Override
    public void makeSound() {
        System.out.println(name + " лает!");
    }
    
    @Override
    public int getAge() {
        return age;
    }
    
    @Override
    public String getName() {
        return name;
    }
}

public class Cat implements Animal {
    private String name;
    private int age;
    
    public Cat(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    @Override
    public void makeSound() {
        System.out.println(name + " мяукает!");
    }
    
    @Override
    public int getAge() {
        return age;
    }
    
    @Override
    public String getName() {
        return name;
    }
}

Сравнительная таблица

АспектКлассОбъектИнтерфейс
Что это?Шаблон, описаниеКонкретный экземплярКонтракт, соглашение
СуществованиеВ кодеВ памяти во время выполненияВ коде
КоличествоОдна копия в программеМожет быть много объектов одного классаОдна определение
ИспользованиеНаследование (extends)Создание (new)Реализация (implements)
СодержитПоля, методы, конструкторДанные полейСигнатуры методов, константы

Практический пример

public interface Vehicle {
    void start();
    void stop();
}

public class Car implements Vehicle {
    private String brand;
    
    public Car(String brand) {
        this.brand = brand;
    }
    
    @Override
    public void start() {
        System.out.println(brand + " машина начала движение");
    }
    
    @Override
    public void stop() {
        System.out.println(brand + " машина остановилась");
    }
}

public class Main {
    public static void main(String[] args) {
        // Car это класс
        // car это объект
        Car car = new Car("Toyota");
        
        // Используем интерфейс
        Vehicle vehicle = car;
        vehicle.start();  // Toyota машина начала движение
        vehicle.stop();   // Toyota машина остановилась
    }
}

Ключевые различия

Класс vs Объект:

  • Класс — это тип, объект — это значение
  • Класс существует в коде, объект существует в памяти
  • Класс создается один раз, объектов может быть много

Класс vs Интерфейс:

  • Класс содержит реализацию, интерфейс только контракт
  • Класс может наследовать другой класс (extends), интерфейс реализовывается (implements)
  • Класс имеет одного родителя (или Object), интерфейсов может быть много

Объект vs Интерфейс:

  • Объект — это экземпляр в памяти
  • Интерфейс — это спецификация поведения
  • Объект реализует интерфейс

Почему интерфейсы важны?

public class Zoo {
    public void feedAnimal(Animal animal) {
        animal.makeSound();
    }
}

// Теперь Zoo может работать с любым животным, реализующим Animal
Zoo zoo = new Zoo();
zoo.feedAnimal(new Dog("Барон", 5));
zoo.feedAnimal(new Cat("Миша", 3));

Интерфейсы позволяют написать гибкий код, который работает с разными классами через один общий контракт.