Для установки нажмите кнопочку Установить расширение. И это всё.

Исходный код расширения WIKI 2 регулярно проверяется специалистами Mozilla Foundation, Google и Apple. Вы также можете это сделать в любой момент.

4,5
Келли Слэйтон
Мои поздравления с отличным проектом... что за великолепная идея!
Александр Григорьевский
Я использую WIKI 2 каждый день
и почти забыл как выглядит оригинальная Википедия.
Статистика
На русском, статей
Улучшено за 24 ч.
Добавлено за 24 ч.
Что мы делаем. Каждая страница проходит через несколько сотен совершенствующих техник. Совершенно та же Википедия. Только лучше.
.
Лео
Ньютон
Яркие
Мягкие

Из Википедии — свободной энциклопедии

По́ле кла́сса или атрибу́т (переменная-член, data member, class field, instance variable) в объектно-ориентированном программировании — переменная, описание которой создает программист при создании класса. Все данные объекта хранятся в его полях. Доступ к полям осуществляется по их имени. Обычно тип данных каждого поля задаётся в описании класса.

Поля структур

Структурные типы, поддерживаемые большинством языков программирования (называемые структурами (structure) в Си, записями (record) в Паскале и т. д.), являются частным случаем классов — а именно, классами из одних только полей. Вся информация, относящаяся к полям классов, в равной степени относится и к структурным типам.

Статические поля

Обычно каждому объекту соответствуют собственные значения всех его полей. Также к полям класса относят статические поля (static data members, static class fields, class variables) — поля, общие для всех объектов класса.

Статические поля семантически не отличаются от обычных глобальных переменных, но они доступны только по квалифицированному имени (то есть с указанием имени класса), и поэтому, в отличие от глобальных переменных, не загромождают пространство глобальных имён.

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

Битовые поля

Некоторые языки, такие как C++, позволяют определять битовые поля. Эти поля занимают менее одной единицы памяти (байт, слово); компилятор сам упаковывает несколько битовых полей в одну единицу памяти, позволяя при этом обращаться к битовым полям как к отдельным полям класса.

Понятие битовых полей не ограничивается полями классов: по аналогии оно было перенесено и на другие случаи упаковки в одну единицу памяти нескольких значений, например в сетевых протоколах и в форматах файлов.

Советы по использованию

Обычно, область доступа полей класса делают закрытой (private), то есть доступ к ним разрешается только методам того же класса. Чтобы предоставить пользователям класса значения его полей, используются свойства: они позволяют классу контролировать изменение его полей, например проверять принадлежность заданного значения диапазону допустимых значений.

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

Примеры использования

C++

 class foo {
 private:
    int x; // Это поле — закрытое. Доступ к нему возможен только
           // из методов класса ''foo''.
 public:
    int y; //Это поле — открытое. Доступ к нему возможен из
           //любого места программы. Рекомендуется так не делать.
 
 // Эти два метода ([[свойство (программирование)#Процедуры свойств|акцессор]]
 // и [[w:en:Mutator method|мутатор]]) обеспечивают доступ к
 // закрытому полю x. Рекомендуется делать именно так.
    int get_x() {return x;};
    void set_x(int x) {this->x = x; };
 
    static int z; // Это статическое поле. Оно принадлежит классу
                  // foo целиком, а не его объектам.
 
    char a:3; // Это битовые поля. В сумме они занимают
    char b:3; // 8 бит, т.е. они будут размещены в одном
    char c:1; // байте памяти. Таким образом возможно
    char d:1; // обращаться к отдельным битам памяти.
 };

Delphi

 type foo = class
   private
     x: Integer; // закрытое поле
   public
     y: Integer; // открытое поле
 
 // для доступа к закрытому полю в Delphi можно использовать свойства
     function get_x: Integer;      // акцессор
     procedure set_x (x: Integer); // мутатор
     property _x: Integer read get_x write set_x;

 // поддержка статических полей для .NET/Win32 введена в Delphi 8/2007 соответственно
     class var z: integer; // Это статическое поле. Оно принадлежит классу
                           // foo целиком, а не его объектам.

 // в Delphi не поддерживаются битовые поля
   end;

Python

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

 class Foo(object):
    z = 0                      # атрибут класса (статический атрибут)
    def __init__(self, x, y):  # конструктор
        self._x = x            # закрытый атрибут (на уровне соглашения между программистами)
        self.y = y             # открытый атрибут
    def getx(self): return self._x            # методы для чтения,
    def setx(self, value): self._x = value    # записи
    def delx(self): del self._x               # удаления свойства
    x = property(getx, setx, delx, "Свойство 'x'.")    # определение свойства

Применение:

foo = Foo(2, 4)               # создание экземпляра
foo.y = 10                    # связывание значения с атрибутом
foo.x = 30                    # то же, но эквивалентно foo.setx(30)
print foo.x, foo.y, foo.z     # печать атрибутов
del foo.x                     # удаление свойства
print foo._x                  # не рекомендуется
print foo.__x                 # не сработает, так как в классе нет такого атрибута

PHP

<?php
class HelloWorld {
  private $message; // Приватное поле класса HelloWorld
  public $global_message; // Публичное поле
  
  // Доступ к приватному полю
  public function GetMessage() {
    return $this->message;
  }
}
?>

См. также

Эта страница в последний раз была отредактирована 20 января 2020 в 00:31.
Как только страница обновилась в Википедии она обновляется в Вики 2.
Обычно почти сразу, изредка в течении часа.
Основа этой страницы находится в Википедии. Текст доступен по лицензии CC BY-SA 3.0 Unported License. Нетекстовые медиаданные доступны под собственными лицензиями. Wikipedia® — зарегистрированный товарный знак организации Wikimedia Foundation, Inc. WIKI 2 является независимой компанией и не аффилирована с Фондом Викимедиа (Wikimedia Foundation).