Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
As classes são declaradas usando a palavra-chave class, conforme mostrado no exemplo a seguir:
class TestClass
{
// Methods, properties, fields, events, delegates
// and nested classes go here.
}
Observações
Somente a herança única é permitida em C#. Em outras palavras, uma classe pode herdar a implementação de apenas uma classe base. No entanto, uma classe pode implementar mais de uma interface. A tabela a seguir mostra exemplos de herança de classe e implementação de interface:
| Herança | Exemplo |
|---|---|
| Nenhum | class ClassA { } |
| Solteiro | class DerivedClass : BaseClass { } |
| Nenhum, implementa duas interfaces | class ImplClass : IFace1, IFace2 { } |
| Único, implementa uma interface | class ImplDerivedClass : BaseClass, IFace1 { } |
As classes que você declara diretamente em um namespace, não aninhadas em outras classes, podem ser públicas ou internas. As classes são internal por padrão.
Os membros da classe, incluindo classes aninhadas, podem ser públicos, protegidos internos, protegidos, internos, privados ou privados protegidos. Os membros são private por padrão.
Para obter mais informações, consulte Modificadores de Acesso.
Você pode declarar classes genéricas que têm parâmetros de tipo. Para obter mais informações, consulte Classes Genéricas.
Uma classe pode conter declarações dos seguintes membros:
Exemplo
O exemplo a seguir demonstra a declaração de campos de classe, construtores e métodos. Ele também demonstra a instanciação do objeto e os dados da instância de impressão. Neste exemplo, duas classes são declaradas. A primeira classe contém Childdois campos privados (name e age), dois construtores públicos e um método público. A segunda classe, StringTesté usada para conter 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ários
Observe que, no exemplo anterior, os campos privados (name e age) só podem ser acessados por meio do método público da Child classe. Por exemplo, você não pode imprimir o nome da criança, do Main método, usando uma instrução como esta:
Console.Write(child1.name); // Error
Acessar membros privados de Child só Main seria possível se Main fosse um membro da classe.
Tipos declarados dentro de uma classe sem um padrão modificador de acesso, privateportanto, os membros de dados neste exemplo ainda seriam private se a palavra-chave fosse removida.
Por fim, observe que, para o objeto criado usando o construtor sem parâmetros (child3), o age campo foi inicializado como zero por padrão.
Especificação da linguagem C#
Para obter mais informações, consulte a Especificação da Linguagem C# . A especificação de idioma é a fonte definitiva para a sintaxe e o uso de C#.