Рубрика: ООП «Интерфейс»
проводник между человеком и программой
операционной системой
техническим устройством способ взаимодействия
public interface ITest
{
/// <summary>
/// проверка экземпляра типа Dictionary на заполенность
/// </summary>
public bool Пустой => System.Convert.ToInt32(this.GetType().GetProperty("Count").GetValue(this))== 0;
}
public class Test:Dictionary<uint,string> ITest{
}
ITest Ex= new Test();
Debug.log(Ex.Пустой);
using UnityEngine;
namespace test2208041738
{
public interface ITest
{
public byte Prop1
{
get;
set;
}
public string Prop2
{
get;
set;
}
public void Method_props_assign() => this.Method(2, "hello");
public (byte, string) Method(byte Prop1, string Prop2) => (this.Prop1 = Prop1, this.Prop2 = Prop2);
}
public class Test : ITest
{
private byte _prop1;
private string _prop2;
public byte Prop1
{
get => _prop1;
set => _prop1 = value;
}
public string Prop2
{
get => _prop2;
set => _prop2 = value;
}
static public void test()
{
ITest t = new Test();
t.Method_props_assign();
Debug.Log(t.Prop1 + "," + t.Prop2);
}
}
}
Ссылка
Абстрактный класс
это класс, у которого не реализован один или больше методов некоторые языки требуют такие методы помечать специальными ключевыми словами
Интерфейс
это абстрактный класс, у которого ни один метод не реализован, все они публичные и нет переменных класса.
Интерфейс нужен обычно когда описывается только интерфейс (тавтология). Например, один класс хочет дать другому возможность доступа к некоторым своим методам, но не хочет себя «раскрывать». Поэтому он просто реализует интерфейс.
Абстрактный класс нужен, когда нужно семейство классов, у которых есть много общего. Конечно, можно применить и интерфейс, но тогда нужно будет писать много идентичного кода в некоторых языках (С++) специального ключевого слова для обозначения интерфейсов нет.
Можно считать, что любой интерфейс — это уже абстрактный класс, но не наоборот.
- определить контракт взаимодействия между классами
- определяем поведение, которое впоследствии будет реализовано в каком-то классе
- как будут вести себя наследники без каких-либо деталей
- нет ни какой реализации
- абстрактные методы
- не может быть конструкторов
- не может содержать поля классов
- описывается сигнатура методов
- публичный контракт взаимодействия
по умолчанию все члены интерфейса имеют модификатор public - Полиморфизм
Передаётся тип данных — это тип интерфейса
в качестве параметра будет принимать объект класса, который у нас будет реализовывать интерфейс. - интерфейс может содержать свойство
свойство — это методы, которые маскируются