Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Special pages
Niidae Wiki
Search
Search
Appearance
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
Class variable
Page
Discussion
English
Read
Edit
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
View history
General
What links here
Related changes
Page information
Appearance
move to sidebar
hide
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{short description|Variable defined in a class whose objects all possess the same copy}} In [[class-based]], [[object-oriented programming]], a '''class variable''' is a [[Variable (programming)|variable]] defined in a [[Class (computer programming)|class]] of which a single copy exists, regardless of how many [[Instance (computer science)|instance]]s of the class exist.<ref name=TheJavaTurotialVariables>{{cite web|url=http://download.oracle.com/javase/tutorial/java/nutsandbolts/variables.html|title=The Java Tutorial, Variables |accessdate=2010-10-21}}</ref><ref name=TheJavaTutorialUnderstandingInstanceAndClassMembers>{{cite web|url=http://download.oracle.com/javase/tutorial/java/javaOO/classvars.html|title=The Java Tutorial, Understanding Instance and Class Members|accessdate=2010-10-21}}</ref><ref name=ThePythonLanguageReferenceCompoundStatements>{{cite web|url=https://docs.python.org/reference/compound_stmts.html#class-definitions|title=The Python Language Reference, Compound Statements|accessdate=2010-10-21}}</ref><ref name=ObjectiveCRuntimeReference>{{cite web|url=https://developer.apple.com/documentation/objectivec/objective_c_runtime|title= Objective-C Runtime Reference |website=Apple Developer|accessdate=1 April 2018}}</ref><ref name=ClassVariablesinCSharp>{{cite web|title=Class Variables in C#|url=https://syntaxdb.com/ref/csharp/class-var|website=Syntaxdb|accessdate=1 April 2018}}</ref> A class variable is not an [[instance variable]]. It is a special type of [[Class (computer science)#Structure|class attribute]] (or class property, [[Field (computer science)|field]], or data member). The same dichotomy between ''instance'' and ''class'' members applies to [[method (computer science)|method]]s ("member functions") as well; a class may have both [[instance method]]s and [[class method]]s. ==Static member variables and static member functions== {{see also|Static method}} In some languages, class variables and class methods are either statically resolved, not via [[dynamic dispatch]], or their memory [[static memory allocation|statically allocated]] at compile time (once for the entire class, as [[static variable]]s), not dynamically allocated at run time (at every instantiation of an object). In other cases, however, either or both of these are dynamic. For example, if classes can be dynamically defined (at run time), class variables of these classes are allocated dynamically when the class is defined, and in some languages class methods are also dispatched dynamically. Thus in some languages, '''static member variable''' or '''static member function''' are used synonymously with or in place of "class variable" or "class function", but these are not synonymous across languages. These terms are commonly used in [[Java (programming language)|Java]], [[C Sharp (programming language)|C#]],<ref name=ClassVariablesinCSharp/> and [[C++]], where class variables and class methods are declared with the [[Static (keyword)|<code>static</code> keyword]], and referred to as '''static member variables''' or '''static member functions'''. ==Examples== === C++ === <syntaxhighlight lang="cpp" line="1"> struct Request { static int count; int number; Requestobject() { number = count; // modifies the instance variable "this->number" ++count; // modifies the class variable "Request::count" } }; int Request::count = 0; </syntaxhighlight> In this C++ example, the class variable <code>Request::count</code> is [[increment operator|incremented]] on each call to the [[constructor (computer science)|constructor]], so that <code>Request::count</code> always holds the number of Requests that have been constructed, and each new Request object is given a <code>number</code> in sequential order. Since <code>count</code> is a class variable, there is only one object <code>Request::count</code>; in contrast, each Request object contains its own distinct <code>number</code> field. Also note that the variable <code>Request::count</code> is initialized only once. === Python === <syntaxhighlight lang="python"> class Dog: vertebrate_group = 'mammals' # class variable dog_1 = Dog print(dog_1.vertebrate_group) # accessing the class variable </syntaxhighlight>In the above Python code, it does not provide much information as there is only class variable in the Dog class that provide the vertebrate group of dog as mammals. In instance variable, you could customize your own object (in this case, dog_1) by having one or more [[instance variable]]s in the Dog class. ==Notes== {{Reflist|2}} {{DEFAULTSORT:Class Variable}} [[Category:Object-oriented programming]] [[Category:Variable (computer science)]] [[Category:Articles with example C++ code]]
Summary:
Please note that all contributions to Niidae Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Encyclopedia:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Templates used on this page:
Template:Cite web
(
edit
)
Template:Reflist
(
edit
)
Template:See also
(
edit
)
Template:Short description
(
edit
)
Search
Search
Editing
Class variable
Add topic