Classes (C# Programming Guide)

A classe é uma construção que permite que você crie seus próprios tipos personalizados pelo agrupamento de variáveis de outros métodos, eventos e tipos. Uma classe é como um plano. Ele define os dados e o comportamento de um tipo. Se a classe não está declarada como estática, o código do cliente pode usá-lo 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 ele vá fora do escopo. Nesse momento, o CLR seleciona marca a variável como elegível para ser descartada. Se a classe é declarada como estático, existe apenas uma cópia em memória e o código do cliente pode acessar somente ele por meio da classe em si, não um a variável de instância. Para obter mais informações, consulte Static Classes and Static Class Members (C# Programming Guide).

Ao contrário de estruturas, classes oferecem suporte à herança, uma característica fundamental da programação orientada a objeto. Para obter mais informações, consulte Inheritance (C# Programming Guide).

Declarar classes

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

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

O class palavra-chave é precedida pelo nível de acesso. Porque pública é usado nesse caso, qualquer pessoa pode criar objetos dessa classe. O nome da classe segue o class palavra-chave. O restante da definição é o corpo da classe, onde o comportamento e os dados são definidos. Campos, propriedades, métodos e eventos em uma classe são chamados coletivamente de membros da classe.

Criando objetos

Embora são por vezes utilizados indiferenciadamente, uma classe e um objeto são coisas diferentes. Uma classe define um tipo de objeto, mas não é um objeto propriamente dito. Um objeto é uma entidade concreta baseada em uma classe e algumas vezes é chamado a uma instância de uma classe.

Objetos podem ser criados usando o nova palavra-chave, seguido do nome da classe que o objeto será baseado em, como este:

Customer object1 = new Customer();

Quando é criada uma instância de uma classe, uma referência ao objeto é passada novamente para o programador. No exemplo anterior, object1 é uma referência a um objeto que se baseia em Customer. Esta referência refere-se ao novo objeto mas não contém os dados de objeto própria. Na verdade, você pode criar uma referência de objeto sem criação de um objeto a todos os:

Customer object2;

Não é recomendável criar referências de objeto como este que não faz referência a um objeto porque tentando acessar um objeto através dessa referência falhará no tempo de execução. No entanto, pode ser feita tal referência a se referem a um objeto, criando um novo objeto, ou atribuindo-lo a um objeto existente, como este:

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

Este código cria duas referências de objeto em que ambas referências contêm o mesmo objeto. Portanto, quaisquer alterações feitas ao objeto feitas através de object3 serão refletidas no subsequentes usos do object4. Porque os objetos que baseiam-se em classes, são referidos com referência, as classes são conhecidos como tipos de referência.

Herança de classe

Herança é realizada usando um derivação, que significa uma classe declarada usando um classe base da qual ele herda o comportamento e dados. Uma classe base é especificada pelo acréscimo de dois-pontos e do nome da classe base após o nome de classe derivada, como esta:

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, ela herda todos os membros da classe base, exceto os construtores.

Ao contrário do C++, uma classe em C# apenas pode herdar diretamente de uma classe base. No entanto, como uma classe base pode herdar de outra classe, uma classe pode indiretamente ter herança de várias classes base. Além disso, uma classe pode implementar diretamente mais que uma interface. Para obter mais informações, consulte Interfaces (C# Programming Guide).

Uma classe pode ser declarada abstrata. Uma classe abstrata contém métodos abstratos que têm uma definição de assinatura, mas nenhuma implementação. Classes abstratas não podem ser instanciadas. Eles podem ser usados apenas por meio de classes derivadas que implementam os métodos abstratos. Por constrast, um lacrado classe não permite que outras classes derivar a partir dele. Para obter mais informações, consulte Abstract and Sealed Classes and Class Members (C# Programming Guide).

Definições de classe podem ser divididas entre arquivos de fonte diferente. Para obter mais informações, consulte Parcial Classes e métodos (guia de programação de C#).

Descrição

No exemplo a seguir, uma classe pública, que contém um único campo, um método e um método especial chamado um construtor é definida. Para obter mais informações, consulte Constructors (C# Programming Guide). Então, a classe é instanciada com o new palavra-chave.

Exemplo

public class Person
{
    // Field
    public string name;

    // Constructor
    public Person()
    {
        name = "unknown";
    }

    // Method
    public void SetName(string newName)
    {
        name = newName;
    }
}
class TestPerson
{
    static void Main()
    {
        Person person = new Person();
        Console.WriteLine(person.name);

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

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

Especificação da linguagem C#

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

Consulte também

Referência

Members (C# Programming Guide)

Methods (C# Programming Guide)

Constructors (C# Programming Guide)

Destructors (C# Programming Guide)

Objects (C# Programming Guide)

Conceitos

C# Programming Guide