Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSharp_Prog_Guide.doc
Скачиваний:
18
Добавлен:
16.11.2019
Размер:
6.22 Mб
Скачать

Наследование классов

Наследование выполняется с помощью образования производных, то есть класс объявляется с помощью базового класса, от которого он наследует данные и поведение. Базовый класс задается добавлением после имени производного класса двоеточия и имени базового класса:

public class Manager : Employee

{

// Employee fields, properties, methods and events are inherited

// New Manager fields, properties, methods and events go here...

}

Когда класс объявляет базовый тип, все члены класса, определенные для базового класса, становятся также частью нового класса. Поскольку базовый класс может сам наследовать от другого класса, который был унаследован от другого класса и так далее, класс может иметь много базовых классов.

Description

In the following example, a public class that contains a single field, a method, and a special method called a constructor is defined. The class is then instantiated with the new keyword.

Example

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 person1 = new Person();

System.Console.WriteLine(person1.name);

person1.SetName("John Smith");

System.Console.WriteLine(person1.name);

}

}

Описание

В следующем примере определяется открытый класс, содержащий одно поле, метод и специальный метод, называемый конструктор. Дополнительные сведения см. в разделе Конструкторы. В методе Main создается экземпляр person1 класса Person с помощью ключевого слова new.

Пример

--

Output

unknown

John Smith

Classes Overview

Classes have the following properties:

  • Unlike C++, only single inheritance is supported: a class can inherit implementation from only one base class.

  • A class can implement more than one interface.

  • Class definitions can be split between different source files.

  • Static classes are sealed classes that contain only static methods.

Результат

unknown

John Smith

Общие сведения о классах

Классы имеют следующие свойства:

  • В отличие от C++ поддерживается только одиночное наследование: класс может унаследовать реализацию только из одного базового класса.

  • Класс может реализовать несколько интерфейсов. Дополнительные сведения см. в разделе Интерфейсы.

  • Описание одного класса можно разделить между различными исходными файлами. Дополнительные сведения см. в разделе Разделяемые классы и методы.

  • Статические классы — это запечатанные классы, содержащие только статические методы. Дополнительные сведения см. в разделе Статические классы и члены статических классов.

Structs

Structs are defined by using the struct keyword, for example:

public struct PostalAddress

{

// Fields, properties, methods and events go here...

}

Structs share most of the same syntax as classes, although structs are more limited than classes:

  • Within a struct declaration, fields cannot be initialized unless they are declared as const or static.

  • A struct may not declare a default constructor (a constructor without parameters) or a destructor.

Because copies of structs are created and destroyed automatically by the compiler, a default constructor and destructor are unnecessary. In effect, the compiler implements the default constructor by assigning all the fields of their default values. Structs cannot inherit from classes or other structs.

Structs are value types. When an object is created from a struct and assigned to a variable, the variable contains the complete value of the struct. When a variable that contains a struct is copied, all the data is copied, and any modification to the new copy does not change the data for the old copy. Because structs do not use references, they do not have identity; you cannot distinguish between two instances of a value type with the same data. All value types in C# derive from ValueType, which inherits from Object.

Value types can be converted to reference types by the compiler in a process known as boxing.

Structs Overview

Structs have the following properties:

  • Structs are value types and classes are reference types.

  • Unlike classes, structs can be instantiated without using a new operator.

  • Structs can declare constructors, but they must take parameters.

  • A struct cannot inherit from another struct or class, and it cannot be the base of a class. All structs inherit directly from System.ValueType, which inherits from System.Object.

  • A struct can implement interfaces.

  • A struct can be used as a nullable type and can be assigned a null value.