Объект - это экземпляр класса. А класс - описание объектов и определение их методов (функций).
Объект - это экземпляр класса. А класс - описание объектов и определение их методов (функций).
Чот ты быстро сдаешься, жесть ещё даже не началась.
Еще немного определений для разогрева:
Ковариантностью называется сохранение иерархии наследования исходных типов в производных типах в том же порядке.
Контравариантностью называется обращение иерархии исходных типов на противоположную в производных типах.
Инвариантностью называется отсутствие наследования между производными типами .
Ковариантностью называется сохранение иерархии наследования исходных типов в производных типах в том же порядке.
Контравариантностью называется обращение иерархии исходных типов на противоположную в производных типах.
Инвариантностью называется отсутствие наследования между производными типами .
Мы ещё инкапсуляцию не прошли а я уже на реакторе про Ковариантность читаю и наследование. Я тут деградирую или учусь?
это зависит от времени суток
Смотря по тому адепт чего - ООП или структурной логики. Если структурной - то конкретно сейчас деградируешь - все в порядке. Если ООП - срочно две дозы деграданта нужны!
Щас понабегут адепты того, что инкапсуляция — это сокрытие
Если очень упростить, для наглядности, то класс - например, человек как обобщенная идея, типа две руки, две ноги, функции типа дыхание и так далее; объект класса человек - вот лично ты, либо лично я, либо лично Вождь.
Немного не понял, если человек это класс то объектами будут руки которые выполняют функцию хватать или ноги которые выполняют функ. бега?
Человек - класс, ты - объект
хватать, бегать - уже будут методы этого класса/объекта. Класс содержит в себе инструкцию, как работает метод(так же определенные свойства, которые может получить при объявлении или иметь сразу, чтобы применять их в методах), а объект использует всё это уже на практике(Объектов может быть сколько угодно и все они могут идти от одного класса, например пользователи и их методы для отправки коммента и свойства вроде имени).
Класс это концепт, как чертеж здания на бумаге. Физического воплощения не имеет.
А вот уже "объект класса" это здание которое построили по этому чертежу.
А вот уже "объект класса" это здание которое построили по этому чертежу.
Класс - человек как вид.
Экземпляр - конкретный человек (как и написали - ты, я, вождь).
Экземпляр - конкретный человек (как и написали - ты, я, вождь).
Шлюха это экземпляр под мамкой. А мака это юнит содержащий описание объектов и определение их методов (функций).
Давай к нам в Си, у нас ни ООП не эксепшенов.
Инклуд пайтон онп.
Инклуд пайтон онп.
ООП - это парадигма, а не какая-то конкретная совокупность фич языка. (Оставлю за скобками, что ООП в С++/Java/C#/итпитд и тот исходный ООП в Smalltalk сильно отличаются).
Сишный GTK - вполне себе близко к ООП. Пример: https://developer.gnome.org/gtk3/stable/GtkButton.html
В общем, ничего не мешает писать на си в неком подобии ООП-стиля, разве что this придется передавать вручную. Виртуальное наследование? Их есть у меня. Яркий пример - это Linux Kernel, где модули определяют какой-то определенный интерфейс в виде структуры с указателями на методы, которые ты у себя в модуле реализуешь (всякий init, open, write, read итп).
Наследования без извратов нет, да. Хотя есть мнение, что наследования не нужны (с)
Ну а вообще, давай к нам в Rust, здесь нет ООП и эксепшенов, зато есть трейты, this вручную передавать не надо, типы-суммы и зайчатки ФП.
Сишный GTK - вполне себе близко к ООП. Пример: https://developer.gnome.org/gtk3/stable/GtkButton.html
В общем, ничего не мешает писать на си в неком подобии ООП-стиля, разве что this придется передавать вручную. Виртуальное наследование? Их есть у меня. Яркий пример - это Linux Kernel, где модули определяют какой-то определенный интерфейс в виде структуры с указателями на методы, которые ты у себя в модуле реализуешь (всякий init, open, write, read итп).
Наследования без извратов нет, да. Хотя есть мнение, что наследования не нужны (с)
Ну а вообще, давай к нам в Rust, здесь нет ООП и эксепшенов, зато есть трейты, this вручную передавать не надо, типы-суммы и зайчатки ФП.
P.S. Напиздел. Наследование в сишечке можно сделать путем копипасты всех полей структуры с дописыванием новых полей снизу. Если лейаут полей "базового класса" сохранен, то указатель на "потомка" можно спокойно приводить к указателю на "базовый класс".
Пример такого непотребства - интерфейс сокетов, в котором передается указатель на структуру описания всякого адреса, которая зависит от типа протокола.
Пример такого непотребства - интерфейс сокетов, в котором передается указатель на структуру описания всякого адреса, которая зависит от типа протокола.
Сутенер выкладывает на сутенерском хэдхантере вакансию проститутки с определенным набором качеств, которыми должен обладать потенциальный кандидат. Сам текст объявления - это класс.
Человек, который подошел по всем параметрам, и отправился обслуживать клиентов - это объект этого класса. Работать может несколько человек по одной вакансии.
Человек, который подошел по всем параметрам, и отправился обслуживать клиентов - это объект этого класса. Работать может несколько человек по одной вакансии.
Тут скорее вакансия - это интерфейс
интерфейс - это уже то как клиент вызывает проститутку. Он может не знать о ее венерических заболеваниях и о том, насколько хорошо она выполняет свои функции. Он знает точно только то, что функция "раздвинуть ноги" есть.
Ну так всё, что ты описал, применимо и к вакансии.
а хэдхантер - адаптер для сутенера
Иди но не забывай! Класс это тоже объект!
когда меня просят объяснить это, я всегда сравниваю класс с чертежом
подробней пожалуйста
Класс - чертёж болта.
Объекты - изготовленные болты.
Объекты - изготовленные болты.
Давай проще, у тебя есть завод который делает жигули.
Жигуль как совокупность чертежей для его производства и работы это класс.
Но каждый произведенный жигуль это объект этого класса, со своим порядковым номером и прочим.
Жигуль как совокупность чертежей для его производства и работы это класс.
Но каждый произведенный жигуль это объект этого класса, со своим порядковым номером и прочим.
Вообще-то нет. Класс и экземпляр класса, в зависимости от реализации на конкретном ЯП, оба могут быть объектами.
А его определение этого и не исключает
Класс - это описание или определение структуры, а объект - это сформированный по этому описанию участок памяти (переменная), который ты уже можешь изменять, этих участков (объектов) может быть сколько угодно. И объект класса может быть частью структуры другого класса.
П.С. Не понимаю за что заминусили, человек не знал, человек спросил.
П.С. Не понимаю за что заминусили, человек не знал, человек спросил.
Всё пацаны, я уже почитал теорию, понял, осознал. Всем спасибо за ответы!! Не ожидал что реактор заставит меня лишний раз открыть книгу. Будет экзамен, мб отчитаюсь (но это не точно)
Класс - ДНК Джанго Фетта
Объекты - клоны Джанго Фетта
Объекты - клоны Джанго Фетта
> Я не спец, но объект это переменная в классе же?
ну, чисто по-дружески можно так сказать: "объект - это переменная, с типом = какому-то классу"
это когда совсем тяжко понимать.
но с уровня "универ" и выше такое уже не простят.
то, про что ты, это запись:
var a = new MyClass(); (создали объект класса, и связали его с этой переменной)
но НА САМОМ ДЕЛЕ можно написать и просто new MyClass() (создали объект класса), без присваивания переменной. Это нормально, но ты не сможешь добраться до этого объекта и сделать с ним что-либо ещё, а в некоторых системах он будет удалён как "мусор".
Объект это не переменная, но объект может быть "указан" под переменной (самому объекту будет похуй, он не в курсе что на него ссылается переменная).
ну, чисто по-дружески можно так сказать: "объект - это переменная, с типом = какому-то классу"
это когда совсем тяжко понимать.
но с уровня "универ" и выше такое уже не простят.
то, про что ты, это запись:
var a = new MyClass(); (создали объект класса, и связали его с этой переменной)
но НА САМОМ ДЕЛЕ можно написать и просто new MyClass() (создали объект класса), без присваивания переменной. Это нормально, но ты не сможешь добраться до этого объекта и сделать с ним что-либо ещё, а в некоторых системах он будет удалён как "мусор".
Объект это не переменная, но объект может быть "указан" под переменной (самому объекту будет похуй, он не в курсе что на него ссылается переменная).
Вот не знал человек, вопрос задал, а вы ему минусов налепили. Не надо так.
Объект это - SCP, а класс это - Кетер.
Класс - шаблон для создания объектов. Все, а не вот эти все ваши пространные объяснения с хабров, кто длиннее.
Собака - это класс. Барбос - объект.
На картинке ситуация, когда объект одного класса охраняется объектами другого класса.
А еще можно сказать, что класс - это контракт, объект - поставки по контракту.
На картинке ситуация, когда объект одного класса охраняется объектами другого класса.
А еще можно сказать, что класс - это контракт, объект - поставки по контракту.
Чтобы написать коммент, необходимо залогиниться
Отличный комментарий!