class (Referência de C#)class (C# Reference)

Classes são declaradas usando a palavra-chave class, conforme mostrado no exemplo a seguir:Classes are declared using the keyword class, as shown in the following example:

class TestClass
{
    // Methods, properties, fields, events, delegates
    // and nested classes go here.
}

ComentáriosRemarks

Somente a herança única é permitida em C#.Only single inheritance is allowed in C#. Em outras palavras, uma classe pode herdar a implementação de apenas uma classe base.In other words, a class can inherit implementation from one base class only. No entanto, uma classe pode implementar mais de uma interface.However, a class can implement more than one interface. A tabela a seguir mostra exemplos de implementação de interface e herança de classe:The following table shows examples of class inheritance and interface implementation:

HerançaInheritance ExemploExample
NenhumNone class ClassA { }
ÚnicoSingle class DerivedClass : BaseClass { }
Nenhuma, implementa duas interfacesNone, implements two interfaces class ImplClass : IFace1, IFace2 { }
Única, implementa uma interfaceSingle, implements one interface class ImplDerivedClass : BaseClass, IFace1 { }

Classes que você declara diretamente dentro de um namespace, não aninhadas em outras classes, podem ser públicas ou internas.Classes that you declare directly within a namespace, not nested within other classes, can be either public or internal. As classes são internal por padrão.Classes are internal by default.

Os membros da classe, incluindo classes aninhadas, podem ser públicos, internos protegidos, protegidos, internos, privados ou protegidos privados.Class members, including nested classes, can be public, protected internal, protected, internal, private, or private protected. Os membros são private por padrão.Members are private by default.

Para obter mais informações, consulte Modificadores de Acesso.For more information, see Access Modifiers.

É possível declarar classes genéricas que têm parâmetros de tipo.You can declare generic classes that have type parameters. Para obter mais informações, consulte Classes genéricas.For more information, see Generic Classes.

Uma classe pode conter declarações dos seguintes membros:A class can contain declarations of the following members:

ExemploExample

O exemplo a seguir demonstra a declaração de métodos, construtores e campos de classe.The following example demonstrates declaring class fields, constructors, and methods. Ele também demonstra a instanciação de objetos e a impressão de dados de instância.It also demonstrates object instantiation and printing instance data. Neste exemplo, duas classes são declaradas.In this example, two classes are declared. A primeira classe, Child, contém dois campos particulares (name e age), dois construtores públicos e um método público.The first class, Child, contains two private fields (name and age), two public constructors and one public method. A segunda classe, StringTest, é usada para conter Main.The second class, StringTest, is used to contain 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.
*/

ComentáriosComments

Observe que, no exemplo anterior, os campos particulares (name e age) só podem ser acessados por meio dos métodos públicos da classe Child.Notice that in the previous example the private fields (name and age) can only be accessed through the public method of the Child class. Por exemplo, você não pode imprimir o nome do filho, do método Main, usando uma instrução como esta:For example, you cannot print the child's name, from the Main method, using a statement like this:

Console.Write(child1.name);   // Error

Acessar membros particulares de Child de Main seria possível apenas se Main fosse um membro da classe.Accessing private members of Child from Main would only be possible if Main were a member of the class.

Tipos declarados dentro de uma classe sem um modificador de acesso têm o valor padrão de private, portanto, os membros de dados neste exemplo ainda seriam private se a palavra-chave fosse removida.Types declared inside a class without an access modifier default to private, so the data members in this example would still be private if the keyword were removed.

Por fim, observe que, para o objeto criado usando o construtor sem parâmetro (child3), o campo age foi inicializado como zero por padrão.Finally, notice that for the object created using the parameterless constructor (child3), the age field was initialized to zero by default.

Especificação da linguagem C#C# language specification

Para obter mais informações, consulte a especificação da linguagem C#.For more information, see the C# Language Specification. A especificação da linguagem é a fonte definitiva para a sintaxe e o uso de C#.The language specification is the definitive source for C# syntax and usage.

Confira tambémSee also