Интерфейсы Интерфейс представляет собой полностью абстрактный класс, все методы которого абстрактны. Методы интерфейса имеют модификаторы public и abstract,

Презентация:



Advertisements
Похожие презентации
Учебный курс Объектно-ориентированный анализ и программирование Лекция 7 Методы как средство реализации операций Лекции читает кандидат технических наук.
Advertisements

Высокоуровневые методы информатики и программирования Лекция 14 Интерфейсы.
Наследование Наследование – это отношение является между классами. class Person { string first_name; int birth_year;... } class Student : Person { float.
Методы классов. Методы класса [атрибуты][модификаторы] {void|тип_результата_функции} имя_метода ([список_формальных_аргументов]) { тело метода} Список.
Интерфейсы Интерфейсом называется семейство методов и свойств, которые сгруппированы в единое целое и инкапсулируют какую-либо определенную функциональную.
Классы в С#. Перечисления С# Перечисление задает конечное множество возможных значений, которые могут получать объекты класса перечисление. [атрибуты][модификаторы]
С# и ООП Формальное определение класса с C# Класс в C# - это пользовательский тип данных (user defined type), который состоит из данных (часто называемых.
Прикладное программирование кафедра прикладной и компьютерной оптики Наследование.
Наследование и полиморфизм. «Быть» или «Иметь» а так же «Точно» или «Как получится»
Кафедра ОСУ, Java 2004 Слайд 1 Наследование Наследование позволяет использовать существующий класс для определения новых классов, т.е. способствует.
Язык программирования Java Дмитриев Андрей Владиславович 2007.
Встроенные классы в Java Макаревич Л. Г.. Разновидности встроенных классов Вложенные (Nested) классы Внутренние (Inner) классы Локальные классы Анонимные.
Наследование Полиморфизм ВЫЗОВ КОНСТРУКТОРОВ И ДЕСТРУКТОРОВ ПРИ НАСЛЕДОВАНИИ.
ПОЛИМОРФИЗМ Лекция 3 1. π ολυμορφισμός 2 Полиморфизм кристаллов – углерод: графит, алмаз. Гендерный полиморфизм – человек: мужчина, женщина. Полиморфизм.
Перегрузка операторов x = a + b результат 1-й операнд2-й операнд оператор По количеству операндов операторы делятся на: унарные (один операнд) бинарные.
НаследованиеНаследование2 class Point { double x; double y; Color color; }; class Radius { Point center; double radius; };
Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
Наследование time time_with_sec В чем преимущества наследования? Наследование кода – поля, метод inc Появилось два класса с которыми точно можно обращаться.
Полиморфизм. Полиморфизм – это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.
Интерфейсы Лекция 4. Реализуйте очередь в виде списка, содержащую комплексные числа Реализуйте методы void Enqueue(Complex с ) – помещает число в очередь.
Транксрипт:

Интерфейсы

Интерфейс представляет собой полностью абстрактный класс, все методы которого абстрактны. Методы интерфейса имеют модификаторы public и abstract, заданные по умолчанию. public interface IProps{ void Prop1(string s); void Prop2 (string name, int val); }

Две стратегии реализации интерфейса Методы интерфейса должны быть обязательно реализованы в наследующем классе, иначе класс будет абстрактным. Два способа реализации: public private

рublic - реализация public class Clain:IProps{ public Clain() {} public void Prop1(string s) { Console.WriteLine(s); } public void Prop2(string name, int val) { Console.WriteLine("name = {0}, val ={1}", name, val); }

рrivate - реализация public class ClainP:IProps{ public ClainP(){ } void IProps.Prop1(string s) { Console.WriteLine(s); } void IProps.Prop2(string name, int val) { Console.WriteLine("name = {0}, val ={1}", name, val); } Обертывание Кастинг public void MyProp1(string s){ ((IProps)this).Prop1(s); } public void MyProp2(string s, int x){ ((IProps)this).Prop2(s, x); }

Вызов методов интерфейса public void TestClainIProps(){ Console.WriteLine("Объект класса Clain вызывает открытые методы!"); Clain clain = new Clain(); clain.Prop1(" свойство 1 объекта"); clain.Prop2("Владимир", 44); Console.WriteLine("Объект класса IProps вызывает открытые методы!"); IProps ip = (IProps)clain; ip.Prop1("интерфейс: свойство"); ip.Prop2 ("интерфейс: свойство",77); Console.WriteLine("Объект класса ClainP вызывает открытые методы!"); ClainP clainp = new ClainP(); clainp.MyProp1(" свойство 1 объекта"); clainp.MyProp2("Владимир", 44); Console.WriteLine("Объект класса IProps вызывает закрытые методы!"); IProps ipp = (IProps)clainp; ipp.Prop1("интерфейс: свойство"); ipp.Prop2 ("интерфейс: свойство",77); }

Проблемы множественного наследования Коллизия имен Для разрешения возможны две стратегии - склеивание методов и переименование. Наследование от общего предка проблема дублирующего наследования сводится к проблеме коллизии имен.

public interface IProps{ void Prop1(string s); void Prop2 (string name, int val); void Prop3(); } public interface IPropsOne{ void Prop1(string s); void Prop2 (int val); void Prop3(); }

public class ClainTwo:IProps,IPropsOne { public void Prop1 (string s) {// склеивание методов Console.WriteLine(s); } public void Prop2(string s, int x) { // перегрузка методов Console.WriteLine(s + "; " + x); } public void Prop2 (int x) { Console.WriteLine(x); } void IProps.Prop3() { // переименование методов Console.WriteLine("Свойство 3 интерфейса 1"); } void IPropsOne.Prop3() { Console.WriteLine("Свойство 3 интерфейса 2"); } public void Prop3FromInterface1() { ((IProps)this).Prop3(); } public void Prop3FromInterface2() { ((IPropsOne)this).Prop3(); }

Наследование интерфейсов public interface IParent{ void ParentMethod(); } public interface ISon1:IParent{ void Son1Method(); } public interface ISon2:IParent{ void Son2Method(); } public class Pars:ISon1, ISon2{ public void ParentMethod() { Console.WriteLine("Это метод родителя!"); } public void Son1Method() { Console.WriteLine("Это метод старшего сына!"); } public void Son2Method() { Console.WriteLine("Это метод младшего сына!"); }