class (Referencia de C#)
Las clases se declaran mediante la palabra clave class, como se muestra en el ejemplo siguiente:
class TestClass
{
// Methods, properties, fields, events, delegates
// and nested classes go here.
}
Comentarios
Sólo la herencia única se permite en C#. En otras palabras, una clase puede heredar la implementación de una sola clase base. Sin embargo, una clase puede implementar más de una interfaz. La siguiente tabla muestra ejemplos de herencia de clases e implementación de interfaces:
Herencia |
Ejemplo |
---|---|
None |
class ClassA { } |
Simple |
class DerivedClass: BaseClass { } |
Ninguna, implementa dos interfaces |
class ImplClass: IFace1, IFace2 { } |
Simple, implementa una interfaz |
class ImplDerivedClass: BaseClass, IFace1 { } |
Las clases que se declara directamente dentro de un espacio de nombres, no anidadas dentro de otras clases, pueden ser público o interno. Las clases son internal de forma predeterminada.
Los miembros de clase, incluso clases anidadas, pueden ser público, protected internal, protegido, interno, o private. Los miembros son private de forma predeterminada.
Para obtener más información, vea Modificadores de acceso (Guía de programación de C#).
Puede declarar las clases genéricas que tienen parámetros de tipo. Para obtener más información, vea Clases genéricas.
Una clase puede contener declaraciones de los siguientes miembros:
Ejemplo
En el siguiente ejemplo se muestra la declaración de campos de clase, constructores y métodos. También muestra la creación de instancias de objetos y la impresión de datos de instancia. En este ejemplo, se declaran dos clases, la clase Child, que contiene dos campos privados (name y age) y dos métodos públicos. La segunda clase, StringTest, se utiliza para contener Main.
class Child
{
private int age;
private string name;
// Default constructor:
public Child()
{
name = "N/A";
}
// Constructor:
public Child(string name, int age)
{
this.name = name;
this.age = age;
}
// Printing method:
public void PrintChild()
{
Console.WriteLine("{0}, {1} years old.", name, age);
}
}
class StringTest
{
static void Main()
{
// Create objects by using the new operator:
Child child1 = new Child("Craig", 11);
Child child2 = new Child("Sally", 10);
// Create an object using the default constructor:
Child child3 = new Child();
// Display results:
Console.Write("Child #1: ");
child1.PrintChild();
Console.Write("Child #2: ");
child2.PrintChild();
Console.Write("Child #3: ");
child3.PrintChild();
}
}
/* Output:
Child #1: Craig, 11 years old.
Child #2: Sally, 10 years old.
Child #3: N/A, 0 years old.
*/
Comentarios
En el ejemplo anterior, observe que sólo se puede obtener acceso a los campos privados (name y age) a través de los métodos públicos de la clase Child. Por ejemplo, no es posible imprimir el valor name de la clase child desde el método Main con una instrucción como ésta:
Console.Write(child1.name); // Error
El acceso a los miembros privados de Child desde Main sólo sería posible si Main fuera un miembro de la clase.
Los tipos declarados dentro de una clase sin un valor predeterminado del modificador de acceso a private, por lo que los miembros de datos de este ejemplo todavía se private si la palabra clave se quitó.
Por último, observe que, para el objeto creado mediante el constructor predeterminado (child3), el campo age se inicializó a cero de forma predeterminada.
Especificación del lenguaje C#
Para obtener más información, consulte la Especificación del lenguaje C#. La especificación del lenguaje es la fuente definitiva de la sintaxis y el uso de C#.
Vea también
Referencia
Tipos de referencia (Referencia de C#)