В объектно-ориентированном программировании переменная -член (иногда называемая полем -членом ) — это переменная , которая связана с конкретным объектом и доступна для всех его методов ( функций-членов ).
В языках программирования на основе классов они делятся на два типа: переменные класса (также называемые статическими переменными-членами ), где только одна копия переменной используется всеми экземплярами класса ; и переменные экземпляра , где каждый экземпляр класса имеет собственную независимую копию переменной. [1]
класс Foo { int bar ; // Переменная-член public : void setBar ( const int newBar ) { bar = newBar ; } }; int main () { Foo rect ; // Локальная переменная вернуть 0 ; }
public class Program { public static void main ( String [] args ) { // Это локальная переменная. Продолжительность его жизни // определяется лексической областью действия. Фу- фу ; } } public class Foo { /* Это переменная-член — новый экземпляр этой переменной будет создаваться для каждого нового экземпляра Foo. Срок жизни этой переменной равен сроку жизни «этого» экземпляра Foo */ внутренний бар ; }
класс Foo : def __init__ ( self ): self . _бар = 0 @property def bar ( self ): вернуть себя . _бар @бар . установщик def bar ( self , new_bar ): self . _bar = новый_барж знак равно Фу () ж . бар = 100 отпечатков ( f . бар )
( defclass foo () ( bar )) ( defvar f ( make-instance 'foo )) ( setf ( значение слота f 'bar ) 100 ) ( print ( значение слота f 'bar ))
/* Ruby имеет три типа переменных-членов: класс, экземпляр класса и экземпляр. */класс Собака # Переменная класса определена в теле класса с двумя знаками at # и описывает данные обо всех собаках *и* их производных породах собак (если таковые имеются) @@sniffs = true конецдворняга = Собака . новый дворняга . сорт . нюхает #=> правда класс Пудель < Собака # «Переменная экземпляра класса» определяется в теле класса с помощью одного символа # и описывает данные только о классе Poodle. Он не делает никаких заявлений о своем родительском классе # или о любом возможном подклассе, производном от Poodle @sheds = false # Когда создается новый экземпляр Poodle, по умолчанию он необученный. Обученная переменная # является локальной по отношению к методу инициализации и используется для установки переменной экземпляра @trained # Переменная экземпляра определяется внутри метода экземпляра и является членом экземпляра Poodle def инициализировать ( обученный = false ) @trained = обученный конец защита has_manners? @обученный конец конецр = Пудель . новый п . сорт . проливает #=> false p . имеет_манеры? #=> ложь
<?phpclass Пример { /** * Пример переменной-члена экземпляра. * * Переменные-члены могут быть общедоступными, защищенными или частными. * * @var int */ public int $foo ; /** * Пример статической переменной-члена. * * @var bool */ protected static int $bar ; /** * Пример метода конструктора. * * @param int $foo */ public function __construct ( int $foo ) { // Устанавливает foo. $this -> foo = $foo ; } }// Создайте новый объект примера. // Установите для переменной-члена "foo" значение 5. $example = new Пример ( 5 );// Перезаписываем переменную-член "foo" на 10. $example -> foo = 10 ;// Печатает 10. echo $example -> foo ;
--region example --- @class example_c --- @field foo номер Пример "переменной-члена". локальный example_c = {} локальный example_mt = { __index = example_c }--- Создает объект из примера. --- @return example_c функция example_c . new ( foo ) — первый аргумент таблицы — это переменные-члены нашего объекта. -- В Lua объект представляет собой метатаблицу, а ее переменные-члены представляют собой пары "ключ-значение" таблицы. return setmetatable ({ foo = foo }, example_mt ) end --endregion-- Создайте пример объекта. -- Установите для переменной-члена "foo" значение 5. local example = example_c . новый ( 5 )-- Перезапишите переменную-член "foo" на 10. example . фу = 10-- Печатает 10. print ( пример . foo )
Переменная-член — это член класса (переменная класса) или член объекта, созданного из этого класса (переменная экземпляра). Он должен быть объявлен внутри класса, а не внутри тела метода класса.