Инкапсуляция полиморфизм наследование c#

Главная / Инкапсуляция полиморфизм наследование c#

Инкапсуляция, полиморфизм, наследование

Все языки OOP, включая С++, основаны на трёх основополагающих концепциях, называемых инкапсуляцией, полиморфизмом и наследованием. Рассмотрим эти концепции.

1. Инкапсуляция

Инкапсуляция (encapsulation) — это механизм, который объединяет данные и код, манипулирующий зтими данными, а также защищает и то, и другое от внешнего вмешательства или неправильного использования. В объектно-ориентированном программировании код и данные могут быть объединены вместе; в этом случае говорят, что создаётся так называемый «чёрный ящик». Когда коды и данные объединяются таким способом, создаётся объект (object). Другими словами, объект — это то, что поддерживает инкапсуляцию.

Внутри объекта коды и данные могут быть закрытыми (private). Закрытые коды или данные доступны только для других частей этого объекта. Таким образом, закрытые коды и данные недоступны для тех частей программы, которые существуют вне объекта. Если коды и данные являются открытыми, то, несмотря на то, что они заданы внутри объекта, они доступны и для других частей программы. Характерной является ситуация, когда открытая часть объекта используется для того, чтобы обеспечить контролируемый интерфейс закрытых элементов объекта.

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

2. Полиморфизм

Полиморфизм (polymorphism) (от греческого polymorphos) — это свойство, которое позволяет одно и то же имя использовать для решения двух или более схожих, но технически разных задач. Целью полиморфизма, применительно к объектно-ориентированному программированию, является использование одного имени для задания общих для класса действий. Выполнение каждого конкретного действия будет определяться типом данных. Например для языка Си, в котором полиморфизм поддерживается недостаточно, нахождение абсолютной величины числа требует трёх различных функций: abs(), labs() и fabs(). Эти функции подсчитывают и возвращают абсолютную величину целых, длинных целых и чисел с плавающей точкой соответственно. В С++ каждая из этих функций может быть названа abs(). Тип данных, который используется при вызове функции, определяет, какая конкретная версия функции действительно выполняется. В С++ можно использовать одно имя функции для множества различных действий. Это называется перегрузкой функций (function overloading).

В более общем смысле, концепцией полиморфизма является идея «один интерфейс, множество методов». Это означает, что можно создать общий интерфейс для группы близких по смыслу действий. Преимуществом полиморфизма является то, что он помогает мнижать сложность программ, разрешая использование того же интерфейса для задания единого класса действий. Выбор же конкретного действия, в зависимости от ситуации, возлагается на компилятор. Вам, как программисту, не нужно делать этот выбор самому. Нужно только помнить и использовать общий интерфейс. Пример из предыдущего абзаца показывает, как, имея три имени для функции определения абсолютной величины числа вместо одного, обычная задача становится более сложной, чем это действительно необходимо.

Полиморфизм может применяться также и к операторам. Фактически во всех языках программирования ограниченно применяется полиморфизм, например, в арифметических операторах. Так, в Си, символ + используется для складывания целых, длинных целых, символьных переменных и чисел с плавающей точкой. В этом случае компилятор автоматически определяет, какой тип арифметики требуется. В С++ вы можете применить эту концепцию и к другим, заданным вами, типам данных. Такой тип полиморфизма называется перегрузкой операторов (operator overloading).

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

3. Наследовние

Наследование (inheritance) — это процесс, посредством которого один объект может приобретать свойства другого. Точнее, объект может наследовать основные свойства другого объекта и добавлять к ним черты, характерные только для него. Наследование является важным, поскольку оно позволяет поддерживать концепцию иерархии классов (hierarchical classification). Применение иерархии классов делает управляемыми большие потоки информации. Например, подумайте об описании жилого дома. Дом — это часть общего класса, называемого строением. С другой стороны, строение — это часть более общего класса — конструкции, который является частью ещё более общего класса объектов, который можно назвать созданием рук человека. В каждом случае порождённый класс наследует все, связанные с родителем, качества и добавляет к ним свои собственные определяющие характеристики. Без использования иерархии классов, для каждого объекта пришлось бы задать все характеристики, которые бы исчерпывающи его определяли. Однако при использовании наследования можно описать объект путём определения того общего класса (или классов), к которому он относится, с теми специальными чертами, которые делают объект уникальным. Наследование играет очень важную роль в OOP.

www.codenet.ru

Введение в объектно-ориентированный JavaScript — Инкапсуляция, наследование и полиморфизм

Written on 06 Июля 2013 . Posted in HTML, CSS, JavaScript

ОГЛАВЛЕНИЕ

Инкапсуляция

Инкапсуляция является полезной частью объектно-ориентированного программирования, изолирующей данные в экземпляре класса от данных в другом экземпляре того же самого класса. Вот почему оператор this используется внутри класса для извлечения данных для данной переменной внутри данного экземпляра класса.

Открытые, защищенные и закрытые члены

Инкапсуляция реализуется в JavaScript путем отделения данных экземпляра внутри класса. Однако нет разных степеней инкапсуляции посредством операторов public, protected и private. Отсюда следует, что доступ к данным нельзя ограничить, как в других объектно-ориентированных языках программирования. Причина в том, что в JavaScript так делать просто не нужно для весьма крупных проектов. К свойствам и методам класса можно обращаться откуда угодно, внутри класса или вне его.

Инкапсуляция на практике

Пример инкапсуляции показан ниже:

При вызове c.MyData возвращает «Some More Text», а c2.MyData возвращает «Some Different Text», показывая, что данные инкапсулированы внутри класса.

Вывод по инкапсуляции

Инкапсуляция – важная часть объектно-ориентированного программирования, чтобы данные в разных экземплярах класса были отделены друг от друга; это реализуется в JavaScript с помощью оператора this. Однако, в отличие от других объектно-ориентированных языков программирования, JavaScript не ограничивает доступ к данным внутри экземпляра класса.

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

Наследование свойств

Как сказано выше в статье, в JavaScript нет прямого наследования, так как он является языком прототипов. Поэтому для наследования класса от другого класса используется оператор prototype, чтобы клонировать конструктор родительского класса и при этом унаследовать его методы и свойства. Конструктор родительского класса также вызывается в конструкторе подкласса, чтобы применить все его методы и свойства к подклассу, как показано в коде ниже:

В примере кода выше создаются два класса — базовый класс по имени Animal(животное) и подкласс по имени Dog(собака), унаследованный от Animal. В конструкторе базового класса создается свойство по имени name, которому присваивается переданное ему значение.

При создании унаследованного класса нужны две строки кода для наследования от базового класса, как показано для Dog:

Эта строка кода вызывается из конструктора подкласса. call() — функция JavaScript, вызывающая функцию в заданном контексте (первый аргумент). Аргументы, необходимые вызываемой функции, также передаются, начиная со второго аргумента call(), как видно для name. Это означает, что конструктор базового класса вызывается из конструктора подкласса, тем самым применяя к подклассу методы и свойства, созданные в Animal.

Вторая строка кода, необходимая для наследования от базового класса, следующая:

Эта строка кода делает прототип для унаследованного класса (клонирующий родительский конструктор при его использовании) новым экземпляром родительского класса, тем самым наследуя любые методы или свойства в методах в подклассе.

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

Наследование методов

Как свойства, методы могут наследоваться от родительского класса в JavaScript, аналогично наследованию свойств, как показано ниже:

Унаследованный метод вызывается так:

Это вызывает alertName(), являющийся унаследованным методом Animal.

Создание экземпляра унаследованного класса

Классы, унаследованные от другого класса, могут вызываться в JavaScript, как вызывался бы базовый класс, и методы и свойства могут вызываться аналогично.

Методы, унаследованные в подклассе, могут быть вызваны аналогично с помощью имени переменной вместо оператора this:

Вывод по наследованию

Наследование – один из трех важных принципов объектно-ориентированного программирования. Он реализуется в JavaScript с помощью prototype и функции call().

Полиморфизм

Полиморфизм – расширение принципа наследования в объектно-ориентированном программировании, реализуемое в JavaScript с помощью оператора prototype. Полиморфизм – это когда подкласс класса может вызвать ту же самую обобщенную унаследованную функцию в своем собственном контексте. Например:

Этот код означает, что если вызывается экземпляр Dog, а затем вызывается функция speak() класса Dog, то она переопределит функцию speak() родительского класса. Однако, хотя мы хотим делать нечто разное с версией speak() каждого подкласса, мы хотим вызывать обобщенную функцию speak() родительского класса с помощью Animal.prototype.speak.call(this);, который вызывает унаследованную функцию в контексте подкласса. Затем, после того как мы делаем что-то еще с ней, что для Dog является alert(«woof»); а для Cat является alert(«miaow»);

При вызове это выглядело бы так:

Первые две строки уведомляют «Fido говорит:» (функция speak() родительского класса), далее следует «woof» (функция speak() класса Dog).

Следующие две строки уведомляют «Lucy говорит:» (функция speak() родительского класса), далее следует «miaow» (функция speak() класса Cat).

Вывод по полиморфизму

Полиморфизм – очень полезная часть объектно-ориентированного программирования, и хотя в данной статье он не разобран очень глубоко, принципы остаются неизменными и могут применяться в таком виде в большинстве аспектов полиморфизма в JavaScript.

Прочитав данную статью, вы должны уметь:
• Создавать классы с методами и свойствами
• Создавать унаследованные классы
• Создавать полиморфные функции

Это лишь вводная статья, но надеемся, что вы сможете использовать приобретенные навыки для более сложных объектно-ориентированных структур.

www.cyberguru.ru

Основные принципы ООП: инкапсуляция, наследование, полиморфизм

Абстракция Edit

Абстра́кция — в объектно-ориентированном программировании это придание объекту характеристик, которые отличают его от всех других объектов, четко определяя его концептуальные границы. Основная идея состоит в том, чтобы отделить способ использования составных объектов данных от деталей их реализации в виде более простых объектов, подобно тому, как функциональная абстракция разделяет способ использования функции и деталей её реализации в терминах более примитивных функций, таким образом, данные обрабатываются функцией высокого уровня с помощью вызова функций низкого уровня.

Такой подход является основой объектно-ориентированного программирования. Это позволяет работать с объектами, не вдаваясь в особенности их реализации. В каждом конкретном случае применяется тот или иной подход: инкапсуляция, полиморфизм или наследование. Например, при необходимости обратиться к скрытым данным объекта, следует воспользоваться инкапсуляцией, создав, так называемую, функцию доступа или свойство.

Абстракция данных — популярная и в общем неверно определяемая техника программирования. Фундаментальная идея состоит в разделении несущественных деталей реализации подпрограммы и характеристик существенных для корректного ее использования. Такое разделение может быть выражено через специальный «интерфейс», сосредотачивающий описание всех возможных применений программы[1].

С точки зрения теории множеств, процесс представляет собой организацию для группы подмножеств своего множества. См. также Закон обратного отношения между содержанием и объемом понятия.

Инкапсуляция Edit

инкапсуля́ция — свойство языка программирования, позволяющее пользователю не задумываться о сложности реализации используемого программного компонента (что у него внутри?), а взаимодействовать с ним посредством предоставляемого интерфейса (публичных методов и членов), а также объединить и защитить жизненно важные для компонента данные. При этом пользователю предоставляется только спецификация (интерфейс) объекта.

Пользователь может взаимодействовать с объектом только через этот интерфейс. Реализуется с помощью ключевого слова: public.

Пользователь не может использовать закрытые данные и методы. Реализуется с помощью ключевых слов: private, protected, internal.

Инкапсуляция — один из четырёх важнейших механизмов объектно-ориентированного программирования (наряду с абстракцией, полиморфизмом и наследованием).

Сокрытие реализации целесообразно применять в следующих случаях:

предельная локализация изменений при необходимости таких изменений,

прогнозируемость изменений (какие изменения в коде надо сделать для заданного изменения функциональности) и прогнозируемость последствий изменений.

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

Наследование — один из четырёх важнейших механизмов объектно-ориентированного программирования (наряду с инкапсуляцией, полиморфизмом и абстракцией), позволяющий описать новый класс на основе уже существующего (родительского), при этом свойства и функциональность родительского класса заимствуются новым классом.

Другими словами, класс-наследник реализует спецификацию уже существующего класса (базовый класс). Это позволяет обращаться с объектами класса-наследника точно так же, как с объектами базового класса.

Простое наследование: Edit

Класс, от которого произошло наследование, называется базовым или родительским (англ. base class). Классы, которые произошли от базового, называются потомками, наследниками или производными классами (англ. derived class).

В некоторых языках используются абстрактные классы. Абстрактный класс — это класс, содержащий хотя бы один абстрактный метод, он описан в программе, имеет поля, методы и не может использоваться для непосредственного создания объекта. То есть от абстрактного класса можно только наследовать. Объекты создаются только на основе производных классов, наследованных от абстрактного. Например, абстрактным классом может быть базовый класс «сотрудник вуза», от которого наследуются классы «аспирант», «профессор» и т. д. Так как производные классы имеют общие поля и функции (например, поле «год рождения»), то эти члены класса могут быть описаны в базовом классе. В программе создаются объекты на основе классов «аспирант», «профессор», но нет смысла создавать объект на основе класса «сотрудник вуза».

Множественное наследование Edit

При множественном наследовании у класса может быть более одного предка. В этом случае класс наследует методы всех предков. Достоинства такого подхода в большей гибкости. Множественное наследование реализовано в C++. Из других языков, предоставляющих эту возможность, можно отметить Python и Эйфель. Множественное наследование поддерживается в языке UML.

Множественное наследование — потенциальный источник ошибок, которые могут возникнуть из-за наличия одинаковых имен методов в предках. В языках, которые позиционируются как наследники C++ (Java, C# и др.), от множественного наследования было решено отказаться в пользу интерфейсов. Практически всегда можно обойтись без использования данного механизма. Однако, если такая необходимость все-таки возникла, то, для разрешения конфликтов использования наследованных методов с одинаковыми именами, возможно, например, применить операцию расширения видимости — «::» — для вызова конкретного метода конкретного родителя.

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

Большинство современных объектно-ориентированных языков программирования (C#, Java, Delphi и др.) поддерживают возможность одновременно наследоваться от класса-предка и реализовать методы нескольких интерфейсов одним и тем же классом. Этот механизм позволяет во многом заменить множественное наследование — методы интерфейсов необходимо переопределять явно, что исключает ошибки при наследовании функциональности одинаковых методов различных классов-предков.

Полиморфизм Edit

Полиморфи́зм — возможность объектов с одинаковой спецификацией иметь различную реализацию.

Язык программирования поддерживает полиморфизм, если классы с одинаковой спецификацией могут иметь различную реализацию — например, реализация класса может быть изменена в процессе наследования[1].

Кратко смысл полиморфизма можно выразить фразой: «Один интерфейс, множество реализаций».

Полиморфизм — один из четырёх важнейших механизмов объектно-ориентированного программирования (наряду с абстракцией, инкапсуляцией и наследованием).

Полиморфизм позволяет писать более абстрактные программы и повысить коэффициент повторного использования кода. Общие свойства объектов объединяются в систему, которую могут называть по-разному — интерфейс, класс. Общность имеет внешнее и внутреннее выражение:

  • внешняя общность проявляется как одинаковый набор методов с одинаковыми именами и сигнатурами (именем методов и типами аргументов и их количеством);
    • внутренняя общность — одинаковая функциональность методов. Её можно описать интуитивно или выразить в виде строгих законов, правил, которым должны подчиняться методы. Возможность приписывать разную функциональность одному методу (функции, операции) называется перегрузкой метода (перегрузкой функций, перегрузкой операций).

    Формы полиморфизма Edit

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

    Параметрические методы. Edit

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

    Параметрические типы. Edit

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

    Полиморфизм переопределения. Edit

    Абстрактные методы часто относятся к отложенным методам. Класс, в котором определен этот метод может вызвать метод и полиморфизм обеспечивает вызов подходящей версии отложенного метода в дочерних классах. Специальный полиморфизм допускает специальную реализацию для данных каждого типа.

    Полиморфизм-перегрузка Edit

    Полиморфизм-перегрузка — это частный случай полиморфизма. С помощью xtik

    gos-it.wikia.com

    Объектно ориентированное программирование (C#) Object-Oriented Programming (C#)

    В этой статье

    C# обеспечивает полную поддержку объектно ориентированного программирования, включая инкапсуляцию, наследование и полиморфизм. C# provides full support for object-oriented programming including encapsulation, inheritance, and polymorphism.

    Инкапсуляция означает, что группа связанных свойств, методов и других членов рассматривается как единый элемент или объект. Encapsulation means that a group of related properties, methods, and other members are treated as a single unit or object.

    Наследование описывает возможность создания новых классов на основе существующих классов. Inheritance describes the ability to create new classes based on an existing class.

    Полиморфизм означает, что можно иметь несколько взаимозаменяемых классов, даже если каждый класс реализует одни и те же свойства или методы разными способами. Polymorphism means that you can have multiple classes that can be used interchangeably, even though each class implements the same properties or methods in different ways.

    В этом разделе рассматриваются следующие понятия. This section describes the following concepts:

    Классы и объекты Classes and Objects

    Термины класс и объект часто взаимозаменяемы, но в действительности классы описывают типы объектов, а объекты — это используемые экземпляры классов. The terms class and object are sometimes used interchangeably, but in fact, classes describe the type of objects, while objects are usable instances of classes. Поэтому процесс создания объекта называется созданием экземпляра. So, the act of creating an object is called instantiation. Если использовать сравнение с чертежом, то класс является чертежом, а объект является зданием, построенным по нему. Using the blueprint analogy, a class is a blueprint, and an object is a building made from that blueprint.

    Определение класса: To define a class:

    C# также предоставляет облегченную версию классов — структуры, которые используются, когда необходимо создать большой массив объектов, использующий небольшой объем памяти. C# also provides a light version of classes called structures that are useful when you need to create large array of objects and do not want to consume too much memory for that.

    Определение структуры: To define a structure:

    Члены класса Class Members

    Каждый класс может состоять из различных членов класса, которые содержат свойства, описывающие данные класса, методы, задающие поведение класса, и события, обеспечивающие связь между различными классами и объектами. Each class can have different class members that include properties that describe class data, methods that define class behavior, and events that provide communication between different classes and objects.

    Свойства и поля Properties and Fields

    Поля и свойства представляют сведения, содержащиеся в объекте. Fields and properties represent information that an object contains. Поля подобны переменным в том, что их можно прочитать или изменить напрямую. Fields are like variables because they can be read or set directly.

    Определение поля: To define a field:

    Для работы со свойствами используются процедуры «Get» и «Set», которые расширяют возможности управления способом задания и возврата значений. Properties have get and set procedures, which provide more control on how values are set or returned.

    В языке C# для хранения значения свойства можно создать частное поле (private) или использовать так называемые автоматически реализуемые свойства, которые автоматически создают это поле и обеспечивают базовую логику для процедур свойств. C# allows you either to create a private field for storing the property value or use so-called auto-implemented properties that create this field automatically behind the scenes and provide the basic logic for the property procedures.

    Определение автоматически реализуемого свойства: To define an auto-implemented property:

    Если требуется выполнить дополнительные операции чтения и записи применительно к значению свойства, определите поле для хранения значения свойства и затем реализуйте базовую логику для хранения и извлечения этого значения: If you need to perform some additional operations for reading and writing the property value, define a field for storing the property value and provide the basic logic for storing and retrieving it:

    У большинства свойств есть методы или процедуры для задания и возврата значения свойства. Most properties have methods or procedures to both set and get the property value. Однако можно создать свойства, доступные только для чтения или только на запись, чтобы запретить изменение или чтение значений свойств. However, you can create read-only or write-only properties to restrict them from being modified or read. В C# можно опустить метод свойства get или set . In C#, you can omit the get or set property method. Следует отметить, что автоматически реализуемые свойства нельзя сделать доступными только для чтения или только для записи. However, auto-implemented properties cannot be read-only or write-only.

    Дополнительные сведения: For more information, see:

    Методы Methods

    Действие, которое выполняет объект, называется методом. A method is an action that an object can perform.

    Определение метода класса: To define a method of a class:

    Класс может иметь несколько реализаций или перегрузок одного и того же метода, которые отличаются от других числом или типами параметров. A class can have several implementations, or overloads, of the same method that differ in the number of parameters or parameter types.

    Перегрузка метода: To overload a method:

    Как правило, метод объявляется при определении класса. In most cases you declare a method within a class definition. Однако C# также поддерживает методы расширения, которые позволяют добавлять методы в существующий класс вне определения класса. However, C# also supports extension methods that allow you to add methods to an existing class outside the actual definition of the class.

    Конструкторы Constructors

    Конструкторы — это методы классов, выполняемые автоматически при создании объекта заданного типа. Constructors are class methods that are executed automatically when an object of a given type is created. Обычно конструкторы выполняют инициализацию членов данных нового объекта. Constructors usually initialize the data members of the new object. Конструктор можно запустить только один раз при создании класса. A constructor can run only once when a class is created. Кроме того, код конструктора всегда выполняется раньше всех остальных частей кода в классе. Furthermore, the code in the constructor always runs before any other code in a class. Следует отметить, что так же, как и для других методов, можно создать несколько перегрузок конструктора. However, you can create multiple constructor overloads in the same way as for any other method.

    Определение конструктора для класса: To define a constructor for a class:

    Методы завершения Finalizers

    Методы завершения используются для уничтожения экземпляров классов. Finalizers are used to destruct instances of classes. В платформе .NET Framework сборщик мусора автоматически управляет распределением и освобождением памяти для управляемых объектов приложения. In the .NET Framework, the garbage collector automatically manages the allocation and release of memory for the managed objects in your application. Однако для очистки неуправляемых ресурсов, создаваемых приложением, могут потребоваться методы завершения. However, you may still need finalizers to clean up any unmanaged resources that your application creates. На один класс допускается только один метод завершения. There can be only one finalizers for a class.

    Дополнительные сведения о методах завершения и сборке мусора в .NET Framework см. в разделе Сборка мусора. For more information about finalizers and garbage collection in the .NET Framework, see Garbage Collection.

    События Events

    События позволяют классу или объекту уведомлять другие классы или объекты о возникновении каких-либо ситуаций. Events enable a class or object to notify other classes or objects when something of interest occurs. Класс, отправляющий (или порождающий) событие, называется издателем, а классы, принимающие (или обрабатывающие) событие, называются подписчиками. The class that sends (or raises) the event is called the publisher and the classes that receive (or handle) the event are called subscribers. Дополнительные сведения о том, как порождаются и обрабатываются события, см. в разделе События. For more information about events, how they are raised and handled, see Events.

    Чтобы объявить событие в классе, используйте ключевое слово event. To declare an event in a class, use the event keyword.

    Чтобы породить событие, вызовите делегат события. To raise an event, invoke the event delegate.

    Чтобы подписаться на событие, используйте оператор += . Чтобы отменить подписку на событие, воспользуйтесь оператором -= . To subscribe to an event, use the += operator; to unsubscribe from an event, use the -= operator.

    Вложенные классы Nested Classes

    Класс, определенный внутри другого класса, называется вложенным. A class defined within another class is called nested. По умолчанию вложенный класс является частным. By default, the nested class is private.

    Чтобы создать экземпляр вложенного класса, укажите имя класса контейнера и имя вложенного класса, используя в качестве разделителя точку: To create an instance of the nested class, use the name of the container class followed by the dot and then followed by the name of the nested class:

    Модификаторы доступа и уровни доступа Access Modifiers and Access Levels

    С помощью модификаторов доступа все классы и члены классов могут указывать уровни доступа, предоставляемые другим классам. All classes and class members can specify what access level they provide to other classes by using access modifiers.

    Имеющиеся модификаторы доступа указаны в следующей таблице. The following access modifiers are available:

    docs.microsoft.com

    Смотрите так же:

    • Отличия частной и личной собственности ПРАВО ЧАСТНОЙ И ЛИЧНОЙ СОБСТВЕННОСТИ ПРАВО ЧАСТНОЙ И ЛИЧНОЙ СОБСТВЕННОСТИ admin » 23 янв 2014, 17:20 Рыбаков Вячеслав Александрович, заведующий кафедрой гражданского и предпринимательского права Московского государственного областного социально-гуманитарного института, доктор […]
    • Закон о разделении сил Закон "О национальной безопасности Украины" вступит в силу 8 июля Документ регулирует основы и принципы политики в сфере безопасности и обороны с учетом курса страны на членство в ЕС и НАТО КИЕВ, 7 июля. /ТАСС/. Закон "О национальной безопасности Украины", подтверждающий курс страны в […]
    • Биохимия правила сдачи Как правильно сдать анализы: рекомендации для пациента Практически все исследования проводятся натощак (не менее 8 часов после последнего приема пищи), поэтому чтобы провести анализы утром можно выпить небольшое количество воды. Чай и кофе - это не вода, пожалуйста, потерпите. […]
    • Пенсия у полиции со скольки лет Пенсия полицейским в 2018 году Сотрудники полиции приравнены к военным и взаимодействие с ними регулируется соответствующими законами. Какая пенсия у полицейских, особенности расчета стажа и нюансы оформления – об этом наша статья. В 2018 году (начиная с января) - планируется […]
    • Виды административных наказаний назначаемых физическим лицам § 2. Виды административных наказаний Статья 3.2 КоАП устанавливает следующие виды административных наказаний: 3) возмездное изъятие орудия совершения или предмета административного правонарушения; 7) административное выдворение за пределы РФ иностранного гражданина или лица без […]
    • Фтс рф полномочия Фтс рф полномочия Федеральная таможенная служба Российской Федерации и система ее органов Система таможенных органов включает следующие звенья, каждс из которых является подсистемой правоохранительных органов: — Федеральная таможенная служба Российской Федерации; — региональные […]
    • Иркутская палата адвокатов Иркутская палата адвокатов Смирнов Олег Валерьевич Адвокатское образование: адвокатский кабинет, Начало адвокатской деятельности: 1996 год, Награжден Медалью «За заслуги в защите прав и свобод граждан» 2 степени.e-mail: [email protected] Бусаргина Ольга Станиславовна Заместитель […]
    • Как самостоятельно оформить визу в литву Литва: самостоятельное оформление визы для россиян в 2018 году Отдых в странах Балтики – довольно популярное направление для туризма в России. Но из-за того, что не так давно они вошли в состав ЕС и подписали шенгенское соглашение, для их посещения нужен Шенген. Для россиян виза в Литву […]