this(42, "string") { } // Overloading a constructor public MyClass(int a, string b) { this.a = a; this.b = b; } } // Code somewhere // Instantiating an object with the constructor above MyClass c = new MyClass(42, "string"); C# static constructor In C#, a static constructor is a static data initializer. Static constructors are also called class constructors. Since the actual method generated has the name .cctor they are often also called "cctors". Static constructors allow complex static variable initialization. Static constructors are called implicitly when the class is first accessed. Any call to a class (static or constructor call), triggers the static constructor execution. Static constructors are thread safe and implement a singleton pattern. When used in a generic programming class, static constructors are called at every new generic instantiation one per type. Static variables are instantiated as well. public class MyClass { private static int _A; // Normal constructor static MyClass() { _A = 32; } // Standard default constructor public MyClass() { } } // Code somewhere // Instantiating an object with the constructor above // right before the instantiation // The variable static constructor is executed and _A is 32 MyClass c = new MyClass(); CFML CFML uses a method named 'init' as a constructor method. Cheese.cfc component { // properties property name="cheeseName"; // constructor function Cheese init( required string cheeseName ) { variables.cheeseName = arguments.cheeseName; return this; } } Create instance of a cheese. myCheese = new Cheese( 'Cheddar' ); Since ColdFusion 10, CFML has also supported specifying the name of the constructor method: component initmethod="Cheese" { // properties property name="cheeseName"; // constructor function Cheese Cheese( required string cheeseName ) { variables.cheeseName = arguments.cheeseName; return this; } } Eiffel In Eiffel, the routines which initialize new objects are called creation procedures. Creation procedures have the following traits: Creation procedures have no explicit return type (by definition of procedure). Creation procedures are named. Creation procedures are designated by name as creation procedures in the text of the class. Creation procedures can be explicitly invoked to re-initialize existing objects. Every effective (i.e., concrete or non-abstract) class must designate at least one creation procedure. Creation procedures must leave the newly initialized object in a state that satisfies the class invariant. Although object creation involves some subtleties, the creation of an attribute with a typical declaration x: T as expressed in a creation instruction create x.make consists of