@yakushechkin

В чем различие между классом, объектом и экземпляром?

Учу язык Java и вот столкнулся с проблемой, что не совсем понимаю различие между этими терминами.
  • Вопрос задан
  • 3993 просмотра
Решения вопроса 2
GavriKos
@GavriKos
Есть стул - это класс. Он имеет какие то параметры типа количества ножек и площади посадочной поверхности. Просто эти параметры есть, и все, без значений. Можно еще назвать их свойствами. Конкретный стул на котором вы сидите - это экземпляр класса. Он уже имеет конкретные значения свойств, что отличает его от других стульев. Как то так.
Ответ написан
Комментировать
@stp008
Класс - это шаблон, по которому можно создать объект (его также называют экземпляром класса или инстансом).
Представим, что у вас есть документация по самолету вместе с чертежом. Также представим, что будущий создатель самолета это компьютер (на самом деле это может быть не только робот, но и человек). В документации и чертеже четко описано как бы вы хотели, чтобы самолет выглядел, из чего состоял и что умел делать. Чертеж вместе с документацией - это класс. А конкретный самолет, созданный человеком или робот по конкретной документации с чертежом - это объект.
В классе вы указываете поля, которые вы хотели бы видеть, и функции, которые вы будете вызывать у созданного в дальнейшем объекта для определенных операций. Если у вас нет в классе статических полей, то вы не сможете вызывать метод или обратиться к полю, которое вы указали в классе. Только после директивы new или (после передачи ссылки на уже существующий объект в памяти), объект создается в оперативной памяти компьютера и вы можете обращатья к полям и методам. Данные для каждого созданного объекта уникальны (не в плане значений, ведь вы можете указать значения по-умолчанию в конструкторе или просто указать одни и те же параметры инициализации) в плане хранения в памяти. Даже если у вас два объекта с одинаковым значением поля, для компьютера эти поля находятся в разных местах памяти.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
qmax
@qmax
программер
У @vdem Плохой, негодный пример!
У васи и маши есть общий метод - трахаться.
Однако, реализация (и, может быть даже, сигнатура) этого метода у них совершенно разные.

Тут налицо наличие базового абстрактногоо класса Человек с виртуальным методом трахаться.
И два унаследованных класа М и Ж, вообще говоря, с сильно разными интерфейсами.
Ответ написан
@vdem
Допустим, есть класс Человек. У него есть методы (прыгать, бегать, кушать, спать), свойства (рост, вес, - неинициализированные). Есть Вася и Маша, экземпляры класса Человек. Соответственно они имеют все те методы, которые объявлены в классе Человек, их свойства уже инициализированы при создании экземпляра.
Человек вася = новый Человек(200, 50);
Человек маша = новый Человек(150, 120);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы