Medlemsvariabel
I objektorienterad programmering är en medlemsvariabel (kallas ibland ett medlemsfält ) ) en variabel som är associerad med ett specifikt objekt och tillgänglig för alla dess metoder ( medlemsfunktioner .
I klassbaserade programmeringsspråk särskiljs dessa i två typer: klassvariabler (även kallade statiska medlemsvariabler ), där endast en kopia av variabeln delas med alla instanser av klassen ; och instansvariabler , där varje instans av klassen har sin egen oberoende kopia av variabeln.
Till exempel
C++
0
klass Foo { int bar ; // Medlemsvariabel public : void setBar ( const int newBar ) { bar = newBar ; } }; int main () { Foo rect ; // Lokal variabel avkastning ; }
Java
public class Program { public static void main ( String [] args ) { // Detta är en lokal variabel. Dess livslängd // bestäms av lexikalisk omfattning. Foo foo ; } } public class Foo { /* Detta är en medlemsvariabel - en ny instans av denna variabel kommer att skapas för varje ny instans av Foo. Livslängden för denna variabel är lika med livslängden för "den här" instansen av Foo */ int bar ; }
Pytonorm
0
klass Foo : def __init__ ( själv ): själv . _bar = @property def bar ( self ): returnera själv . _bar @bar . setter def bar ( själv , new_bar ): själv . _bar = new_bar f = Foo () f . bar = 100 utskrift ( f . bar )
Vanlig Lisp
( defclass foo () ( bar )) ( defvar f ( make-instance 'foo )) ( setf ( slot-värde f ' bar ) 100 ) ( print ( slot-value f ' bar ))
Rubin
/* Ruby har tre medlemsvariabeltyper: klass, klassinstans och instans. */ klass Hund # Klassvariabeln definieras inom klasskroppen med två at-tecken # och beskriver data om alla hundar *och* deras härledda hundraser (om några) @@sniffs = true end mutt = Hund . ny mutt . klass . sniffs #=> true class Poodle < Dog # "Klassinstansvariabeln" definieras i klassens kropp med ett enda at-tecken # och beskriver data om endast pudelklassen. Den gör inga anspråk på sin överordnade klass # eller någon möjlig underklass härledd från Poodle @sheds = false # När en ny Poodle-instans skapas är den som standard otränad. Den 'tränade' variabeln # är lokal för initialiseringsmetoden och används för att ställa in instansvariabeln @trained # En instansvariabel definieras inom en instansmetod och är medlem av pudelinstansen def initialize ( trained = false ) @trained = tränade slut def has_maners? @ tränad slutänd p = Pudel . ny s . klass . skjul #=> falsk p . har_skick? #=> falskt
PHP
<?php class Exempel { /** * Exempel instansmedlemsvariabel. * * Medlemsvariabler kan vara offentliga, skyddade eller privata. * * @var int */ public int $foo ; /** * Exempel på statisk medlemsvariabel. * * @var bool */ skyddad statisk int $bar ; /** * Exempel på konstruktormetod. * * @param int $foo */ public function __construct ( int $foo ) { // Sätter foo. $this -> foo = $foo ; } } // Skapa ett nytt exempelobjekt. // Ställ in "foo"-medlemsvariabeln till 5. $example = nytt Exempel ( 5 ); // Skriv över "foo"-medlemsvariabeln till 10. $example -> foo = 10 ; // Skriver ut 10. echo $example -> foo ;
Lua
--regionexempel --- @class example_c --- @field foo number Exempel "medlemsvariabel". local example_c = {} local example_mt = { __index = example_c } --- Skapar ett objekt från exempel. --- @return exempel_c funktion exempel_c . new ( foo ) -- Det första tabellargumentet är vårt objekts medlemsvariabler. -- I ett Lua-objekt är en metatabel och dess medlemsvariabler är tabellnyckel-värdepar. return setmetatable ({ foo = foo }, example_mt ) end --endregion -- Skapa ett exempelobjekt. -- Ställ in "foo"-medlemsvariabeln till 5. local example = example_c . new ( 5 ) -- Skriv över "foo"-medlemsvariabeln till 10. exempel . foo = 10 -- Skriver ut 10. print ( exempel . foo )