Classes (Guia de Programação em C#)

Uma classe é uma compilação que permite a você criar seus próprios tipos personalizados agrupamento juntos variáveis de outros tipos, métodos e eventos. Uma classe é como um modelo. Define os dados e comportamento de um tipo. Se a classe não é declarada como estático, o código do cliente pode usá-la criando objetos ou instâncias que são atribuídos a uma variável. A variável permanece na memória até que todas as referências a ela saiam de escopo. No momento, o CLR marcá-lo como qualificado para coleta de lixo. Se a classe é declarada como static, então apenas uma cópia existe na memória e o código do cliente só pode acessá-lo através da classe em si, não uma variável de instância. Para obter mais informações, consulte Classes static e membros de classes static (Guia de Programação em C#).

Diferentemente de estruturas, as classes oferecem suporte a herança, uma característica fundamental da programação orientada a objeto. Para obter mais informações, consulte Herança (Guia de Programação em C#).

Declarando classes

Classes são declaradas usando a palavra-chave de classe , conforme mostrado no exemplo o seguir:

public class Customer
{
    //Fields, properties, methods and events go here...
}

A palavra-chave de class é precedido pelo nível de acesso. Porque público é usado nesse caso, ou pode criar objetos dessa classe. O nome da classe segue a palavra-chave de class . O restante de definição é o corpo da classe, onde o comportamento e os dados são definidos. Os campos, propriedades, métodos, e eventos de uma classe são coletivamente chamados membros da classe.

Criando objetos

Embora eles sejam usados de forma intercambiável às vezes, uma classe e um objeto são coisas diferentes. Uma classe define um tipo de objeto, mas não é um objeto. Um objeto é uma entidade concreta com base em uma classe, e as vezes é conhecido como uma instância de uma classe.

Objetos podem ser criados usando a palavra-chave de novo seguida do nome da classe que o objeto será baseado no, assim:

Customer object1 = new Customer();

Quando uma instância de uma classe é criada, uma referência ao objeto é passado de volta para o programador. No exemplo anterior, object1 é uma referência a um objeto que é baseado em Customer. Essa referência se refere ao novo objeto mas não contém os próprios dados do objeto. Na verdade, você pode criar uma referência de objeto sem criar um objeto de qualquer:

Customer object2;

Não recomendamos criar referência de objeto como essa que não se refere a um objeto porque tentando acessar um objeto com tal referência falhará em tempo de execução. No entanto, tal referência pode ser feita para se referir a um objeto, criando um novo objeto, ou atribuindo-o a um objeto existente, como este:

Customer object3 = new Customer();
Customer object4 = object3;

Esse código cria duas referências de objetos aqueles que ambos referem-se ao mesmo objeto. Como consequência, todas as alterações para o objeto feito com object3 serão refletidas em usa subsequentes de object4. Como os objetos que são baseados em classes são referenciados por referência, classes são conhecidas como a referência tipos.

Herança de classe

A herança é realizada usando uma base, o que significa que uma classe é declarada usando uma classe base que herda de dados e comportamento. Uma classe base é especificada para acrescentar dois-pontos e o nome da classe base após o nome de classe derivada, assim:

public class Manager : Employee
{
    // Employee fields, properties, methods and events are inherited 
    // New Manager fields, properties, methods and events go here...
}

Quando uma classe declara uma classe base, herda todos os membros da classe base exceto os construtores.

Diferentemente de uma classe em C++, C# somente pode diretamente herdar de uma classe base. No entanto, como uma classe base própria pode herdar de outra classe, uma classe pode herdar indiretamente várias classes base. Além disso, uma classe pode implementar diretamente mais de uma interface. Para obter mais informações, consulte Interfaces (Guia de Programação em C#).

Uma classe pode ser declarada sumário. Uma classe abstrata contém métodos abstratos que não têm uma definição de assinatura mas nenhuma implementação. As classes abstratas não podem ser instanciadas. Só podem ser usados por meio de classes derivadas que implementam os métodos abstratos. Por constrast, uma classe de sealed não permite que outras classes derivem-se de ela. Para obter mais informações, consulte Classes e membros de classes abstract e sealed (Guia de Programação em C#).

As definições de classe podem ser de divisão entre os arquivos de origem diferentes. Para obter mais informações, consulte Classes e métodos partial (Guia de Programação em C#).

Descrição

No exemplo, uma classe pública que contém um único campo, um método, e um método chamado um construtor são definidos. Para obter mais informações, consulte Construtores (Guia de Programação em C#). A classe é instanciada em com a palavra-chave de new .

Exemplo

public class Person
{
    // Field 
    public string name;

    // Constructor that takes no arguments. 
    public Person()
    {
        name = "unknown";
    }

    // Constructor that takes one argument. 
    public Person(string nm)
    {
        name = nm;
    }

    // Method 
    public void SetName(string newName)
    {
        name = newName;
    }
}
class TestPerson
{
    static void Main()
    {
        // Call the constructor that has no parameters.
        Person person1 = new Person();
        Console.WriteLine(person1.name);

        person1.SetName("John Smith");
        Console.WriteLine(person1.name);

        // Call the constructor that has one parameter.
        Person person2 = new Person("Sarah Jones");
        Console.WriteLine(person2.name);

        // Keep the console window open in debug mode.
        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }
}
// Output: 
// unknown 
// John Smith 
// Sarah Jones

Especificação da linguagem C#

Para obter mais informações, consulte a Especificação da linguagem C#. A especificação da linguagem é a fonte definitiva para a sintaxe e o uso de C#.

Consulte também

Referência

Polimorfismo (Guia de Programação em C#)

Membros (Guia de Programação em C#)

Métodos (Guia de Programação em C#)

Construtores (Guia de Programação em C#)

Destruidores (Guia de Programação em C#)

Objetos (Guia de Programação em C#)

Conceitos

Guia de Programação em C#

Programação orientada a objeto (C# e Visual Basic)