Constructor (object-oriented programming): Difference between revisions

Content deleted Content added
m formatting change
No edit summary
Line 1:
''''Italic text''''Italic text''''{{ProgLangCompare}}
In [[class-based programming|class-based]] [[object-oriented programming]], a '''constructor''' in a [[Class (computer programming)|class]] is a special type of [[subroutine]] called to [[object creation|create an object]]. It prepares the new object for use, often accepting [[argument]]s that the constructor uses to set required [[member variable]]s.
 
'''''Instance constructors''', sometimes referred to as '''.ctor''', are used to create and initialize any instance member variables when the new expression is used to create an object of a class. To initialize a static class, or static variables in a non-static class, a '''static constructor''' must be defined. Static constructors are sometimes referred to as '''.cctor'''.<ref>{{cite web|url=http://msdn.microsoft.com/en-us/library/k6sa6h87.aspx|title=Instance Constructors (C# Programming Guide) |publisher=Microsoft Developers Networks |accessdate=2014-04-05}}</ref><ref>{{cite web|url=http://books.google.com/books?id=oAcCRKd6EZgC&pg=PA222&lpg=PA222&dq=ctor+cctor&source=bl&ots=KAYfbDu_ay&sig=gLj6X9SpWXz86GHMvljkfb-D8Oc&hl=en&sa=X&ei=fUFAU--WJOewsASQ54GQAw&ved=0CGoQ6AEwCQ#v=onepage&q=ctor%20cctor&f=false |title=Expert .NET 2.0 IL Assembler |publisher=APress |date=2006-01-01|accessdate=2014-04-05}}</ref>
 
A constructor resembles an [[method (computer science)|instance method]], but it differs from a method in that it has no explicit [[return type]], it is not implicitly [[inheritance (object-oriented programming)|inherited]] and it usually has different rules for scope modifiers. Constructors often have the same name as the declaring [[class (computer science)|class]]. They have the task of [[initialization (computing)|initializing]] the object's [[data member]]s and of establishing the [[invariant (computer science)|invariant]] of the class, failing if the invariant is invalid. A properly written constructor leaves the resulting [[object (computer science)|object]] in a ''valid'' state. [[Immutable object]]s must be initialized in a constructor.
Line 14:
{{unreferenced section|date=June 2013}}
 
=== Parameterized constructors ===''Constructors that can take arguments are termed as parameterized constructors.
 
Constructors that can take arguments are termed as parameterized constructors.
The number of arguments can be greater or equal to one(1).
For example:
Line 370 ⟶ 368:
=== Object Pascal ===
 
In [[Object Pascal]], the constructor is similar to a [[factory method]]. The only syntactic difference to regular methods is the keyword <code>constructor</code> in front of the name (instead of <code>procedure</code> or <code>function</code>). It can have any name, though the convention is to have <codeco'''''Italic text''''''''Bold text'''''''de>Create</code> as prefix, such as in <code>CreateWithFormatting</code>. Creating an instance of a class works like calling a static method of a class: <code>TPerson.Create('Peter')</code>.
 
<source lang="delphi">