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

A diferencia de C++, en C# sólo se permite la herencia simple. 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

Ninguno

class ClassA { }

Simple

class DerivedClass: BaseClass { }

Ninguna, implementa dos interfaces

class ImplClass: IFace1, IFace2 { }

Simple, implementa una interfaz

class ImplDerivedClass: BaseClass, IFace1 { }

Los niveles de acceso protected y private sólo se permiten en clases anidadas.

También se pueden declarar clases genéricas que tengan parámetros de tipo; vea Clases genéricas (Guía de programación de C#) para obtener más información.

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 en una clase sin un modificador de acceso tienen como valor predeterminado private, de modo que los miembros de datos de este ejemplo seguirían siendo private aunque se quite la palabra clave.

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, vea 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

Palabras clave de C#

Tipos de referencia (Referencia de C#)

Conceptos

Guía de programación de C#

Otros recursos

Referencia de C#