A property, in some object-oriented programming languages, is a special sort of class member, intermediate in functionality between a field (or data member) and a method. The syntax for reading and writing of properties is like for fields, but property reads and writes are (usually) translated to 'getter' and 'setter' method calls. The field-like syntax is easier to read and write than many method calls, yet the interposition of method calls "under the hood" allows for data validation, active updating (e.g., of GUI elements), or implementation of what may be called "read-only fields". See an instructive example for C# language below. Support in languages Programming languages that support properties include ActionScript 3, C#, D, Delphi/Free Pascal, eC, F#, Kotlin, JavaScript, Objective-C 2.0, Python, Scala, Swift, Lua, and Visual Basic. Some object-oriented languages, such as Java and C++, do not support properties, requiring the programmer to define a pair of accessor and mutator methods instead. Oberon-2 provides an alternative mechanism using object variable visibility flags. Other languages designed for the Java Virtual Machine, such as Groovy, natively support properties. While C++ does not have first class properties, they can be emulated with operator overloading. Also note that some C++ compilers support first class properties as language extensions. In Microsoft Visual Studio, GCC, and llvm/clang, the __declspec(property) creates properties similar to C#. Borland C++ and Borland/CodeGear/Embarcadero C++Builder use the __property keyword. In many object oriented languages properties are implemented as a pair of accessor/mutator methods, but accessed using the same syntax as for public fields. Omitting a method from the pair yields a read-only or an uncommon write-only property. In some languages with no built-in support for properties, a similar construct can be implemented as a single method that either returns or changes the underlying data, depending on the context of its invocation. Such techniques are used e.g. in Perl. Some languages (Ruby, Smalltalk) achieve property-like syntax using normal methods, sometimes with a limited amount of syntactic sugar. Syntax variants Some languages follow well-established syntax conventions for formally specifying and utilizing properties and methods. Among these conventions: Dot notation Bracket notation Dot notation The following example demonstrates dot notation in JavaScript. document.createElement('pre'); Bracket notation The following example demonstrates bracket notation in JavaScript. document['createElement']('pre'); Example syntax C# class Pen { private int color; // private field // public property public int Color { get { return this.color; } set { if (value >