Разница между объектами, атрибутами, переменными и экземпляром класса - PullRequest
0 голосов
/ 03 октября 2018

У меня проблемы с пониманием лекций моего профессора, потому что мой мозг, похоже, воспринимает объекты, атрибуты, переменные и экземпляр класса как взаимозаменяемые.Я действительно ценю любую помощь в различении этих 4 терминов.Спасибо!

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

это было бы полезно для вас. Визит https://www.quora.com/What-is-the-difference-between-instance-variable-and-class-variable

Переменные класса объявляются с ключевым словом static, а переменные экземпляра объявляются без ключевого слова static.

Переменные класса являются общими для всех экземпляровучебный класс.Эти переменные разделяются между объектами класса.Переменные экземпляра не разделяются между объектами класса.Каждый экземпляр будет иметь свою собственную копию переменных экземпляра.

Поскольку переменные класса являются общими для всех объектов класса, изменения, внесенные в эти переменные через один объект, будут отражаться в другом.Поскольку каждый объект будет иметь свою собственную копию переменных экземпляра, изменения, внесенные в эти переменные через один объект, не будут отражаться в другом объекте.

Переменные класса могут быть доступны с использованием либо имени класса, либо ссылки на объект.Доступ к переменным экземпляра возможен только через ссылку на объект.

https://qph.fs.quoracdn.net/main-qimg-c4b92e80a8500c11fe705c1bafc3ed26

0 голосов
/ 06 октября 2018

Вы не упоминаете язык программирования в вопросе.

Обычно класс - это модель или шаблон, который объявляет, как выглядит определенная категория объектов.

Вы даете классуимя, и вы упоминаете, если он наследует членов от другого класса или нет.

Вы также определяете членов класса.Это могут быть переменные, которые содержат данные (состояние объекта) и методы (функции, определенные классом), которые определяют поведение объекта.

Когда вы создаете экземпляр класса с помощью объявленной модели, вы получаете объект, который является конкретным классомпример.Это конкретная сущность, представьте ее как новую переменную в памяти, типом данных которой является класс (вместо, например, целочисленных или строковых типов данных), значением которой является ее состояние в определенный момент времени (состояние, являющеесякомбинация всех его значений переменных-членов данных на данный момент).Этот объект должен иметь идентичность, потому что он существует в памяти, и это объект, отличный от других объектов, которые вы можете создать из этого или любого другого класса.Переменные-члены данных содержат конкретные значения для каждого экземпляра.Они не разделяются между экземплярами.

Теперь методы-члены могут совместно использоваться экземплярами, поскольку они не имеют состояния, поэтому они равны для каждого объекта.Они вызываются с некоторыми аргументами и выполняют некоторое действие, которое изменяет состояние объекта или, по крайней мере, тесно связано с конкретным объектом.Но они являются общими для каждого объекта.Методы обычно знают, на какой конкретный объект они действуют, используя специальное имя, например «this» или «self», которое ссылается на «себя».

Объекты обычно присваиваются переменным при создании, сохраняя ссылкук его идентичности, что позволяет оставшемуся коду манипулировать ими.

Вы используете эти переменные для ссылки на конкретный объект вне кода классов, и используете «this» или «self» для ссылки на него изнутриклассы.

Часто вы получаете доступ к элементам объекта, соответствующим имени объекта.Как в 'player.run ()' или 'player.total_score'.Это если player - это переменная, которой вы назначили экземпляр класса Player.Это может выглядеть как player = new Player или player = Player ().

Атрибуты - это просто другое имя, данное членам данных.Иногда атрибуты, а также методы могут быть общедоступными или закрытыми, то есть их может использовать код вне класса, или доступ может иметь только код класса.

Иногда вы видите элементы данных или атрибуты, называемые свойствами.Когда вы получаете доступ к атрибуту, вы получаете доступ к свойству.В некоторых языках, таких как Python, свойство может означать что-то немного отличающееся, но в любом случае тесно связанное ...

Теперь также в зависимости от языка все может быть описано как описано (C ++, Java), или вы можете рассматривать все какобъекты, включая определения классов (Python).

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

Этовсе это не более, чем возможность определения ваших собственных типов данных за пределами встроенных типов языка.

Вы можете рассматривать переменные как имена для блоков (контейнеров памяти по определенному адресу), содержащих значения.Но иногда вы хотите манипулировать не значениями, а самими адресами.На этот раз вы говорите, что у вас есть ссылки (на адреса).Иногда переменные - это просто имена для этих ссылок.Ссылки также известны как указатели.Но вы могли бы сделать математику с указателями (увеличение, уменьшение, добавление фиксированного значения к ...), которые вы обычно не делаете со ссылками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...