Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Понятие «Класс», «Структура», «Объект» и «Индексатор»Содержание книги
Поиск на нашем сайте
О классах, структурах и понятие «Модификатор доступа» О классах, структурах и понятие «Модификатор доступа»
О классах и структурах
Классы и структуры являются двумя основными конструкциями системы общих типов CTS (Common Type System) в платформе .NET Framework. Каждая, по сути, является структурой данных, инкапсулирующей набор данных и поведение, связанные как логическая единица. Данные и поведение являются членами класса или конструкции, и в них включены методы, свойства, события, поля (переменные) и прочее. Объявление класса или структуры подобно чертежу, который используется для создания экземпляров или объектов во время выполнения. При определении класса или структуры с именем Person, Person является именем типа. При объявлении или инициализации переменной p типа Person, p считается объектом или экземпляром Person. Возможно создание нескольких экземпляров одного типа Person, и каждый экземпляр может иметь разные значения в своих свойствах и полях. Класс является ссылочным типом. При создании объекта класса переменная, к которой назначается объект, сохраняет только ссылку на память. При назначении ссылки на объект к новой переменной новая переменная ссылается на исходный объект. Изменения, внесённые через одну переменную, отображаются в другой переменной, поскольку обе они ссылаются на одни данные. Структура является типом значения. При создании структуры переменная, к которой она назначается, сохраняет фактические данные структуры. При назначении структуры новой переменной выполняется её копирование. Поэтому новая переменная и исходная переменная содержат две отдельных копии одних данных. Изменения, внесённые в одну копию, не влияют на другую копию. В целом, классы используются для моделирования более сложного поведения, или же создаются данные, предназначенные для изменения после объекта класса. Структуры лучше всего подходят для небольших структур данных, которые содержат преимущественно те данные, которые не предназначены для изменения после создания структуры.
В следующем примере на верхнем уровне пространства имён LC_Console определен класс MyCustomClass, содержащий три члена. Экземпляр (объект) класса MyCustomClass создаётся в методе Main класса Program, а для доступа к методам и свойствам используется точечная нотация («доступ по точке», наглядно демонстрируется при написании кода с включённой функцией среды разработки Visual Studio 2010 ― функцией IntelliSense):
using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace LC_Console { // Класс public class MyCustomClass { // Члены класса // Свойство public int Number { get; set; } // Метод public int Multiply(int num) { return num * Number; }
// Конструктор public MyCustomClass() { Number = 0; } } // Класс для метода Main, создан изначально средой разработки class Program { static void Main() { // Создаём экземпляр класс MyCustomClass myClass = new MyCustomClass(); // Задаём свойству значение myClass.Number = 27; // Вызываем метод и передаём ему цифру 4 (далее в методе идёт умножение на число 27) int result = myClass.Multiply(4); } } }
Основные особенности, которые будут (частично) раскрыты в теоретических материалах данного учебного курса позднее: · Вложенные типы. Класс или структура может быть вложенной внутри другого класса или структуры. · Специальные возможности. Некоторые методы и свойства предназначены для вызова или доступа из кода вне класса или структуры, известной как клиентский код. Другие методы и свойства могут использоваться только в самом классе или структуре. Важно ограничить доступность кода, чтобы он был доступен только предназначенному клиентскому коду. Пользователь задаёт доступность типов и их членов для клиентского кода с помощью модификаторов доступа: public, protected, internal, protected internal и private. Уровнем доступности по умолчанию является private. · Наследование. Классы (но не структуры) поддерживают наследование. Класс, производный от другого (базового класса), автоматически включает все открытые, защищенные и внутренние члены базового класса, за исключением конструкторов и деструкторов. · Универсальные типы. Классы и структуры можно определять с одним или несколькими параметрами типов. Тип указывается в клиентском коде при создании экземпляра данного типа. Например, класс List<T> пространства имён System.Collections.Generic определен с одним параметром. При создании экземпляра List<string> или List<int> указывается тип значений, которые можно будет хранить в этом списке. · Статические типы. Классы (но не структуры) могут объявляться статическими. Статический класс может содержать только статические члены, и с помощью ключевого слова new нельзя будет создать экземпляр такого класса. Одна копия такого класса загружается в память при запуске программы, и все методы этого класса становятся доступными по имени класса. Классы и структуры могут содержать статические члены. · Разделяемые типы. Существует возможность определить часть класса, структуры или метода в одном файле кода, а другую часть — в другом файле кода. · Интерфейсы. Классы и структуры способны наследовать различным интерфейсам. Наследование интерфейсу означает, что в этом типе реализованы все методы, определённые в интерфейсе. · Анонимные типы. В случаях, когда создавать именованный класс неудобно или не требуется, например, при заполнении списка структурами данных, которые не нужно сохранять или передавать другому методу, используются анонимные типы. · Расширение классов. Существует возможность расширять класс без создания производного класса. Для этого создается отдельный тип, к методам которого можно обращаться, как если бы они принадлежали исходному типу. · Неявно типизированные локальные переменные. Внутри метода класса или структуры можно использовать неявную типизацию, чтобы тип определялся во время компиляции. · Члены класса или структуры. Все методы, поля (переменные), константы, свойства и события должны быть объявлены внутри типа; они называются членами класса или структуры. В C# не существует глобальных переменных или методов, как в некоторых других языках. Даже точка входа программы, метод Main, должен быть объявлен внутри класса или структуры. Члены класса включают все члены, объявленные в этом классе, а также все члены (кроме конструкторов и деструкторов), объявленные во всех классах в иерархии наследования данного класса.Закрытые члены в базовых классах наследуются, но недоступны из производных классов. В следующем списке перечислены все возможные типы членов, которые можно объявлять в классе или в структуре:
Об инкапсуляции иногда говорят как о первом базовом элементе или принципе объектно-ориентированного программирования. Согласно принципу инкапсуляции класс или структура может задать уровень доступности каждого из членов по отношению к коду вне класса или структуры. Методы и переменные, которые не предназначены для использования вне класса или сборки, могут быть скрыты, чтобы ограничить потенциальную угрозу возникновения ошибок кода или вредоносное использование.
|
||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-08-15; просмотров: 426; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.216.161.178 (0.011 с.) |