Рубрики
C# Fragments "Unity-C#" test "C#" ООП "Интерфейс" ООП "Свойство"

C# «Получить конвертированное значение свойства экземпляра по имени в интерфейсе»

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.Пустой);
Рубрики
C# Fragments "Unity-C#" test "C#" Метод ООП "Интерфейс"

C# «Метод интерфейса присваивает значения свойствам без реализации в классе»

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);
        }
    }
}
Рубрики
ООП "Абстрактный Класс" ООП "Интерфейс"

ООП «Интерфейс или Абстрактный Класc»

Ссылка

Абстрактный класс

это класс, у которого не реализован один или больше методов некоторые языки требуют такие методы помечать специальными ключевыми словами

Интерфейс

это абстрактный класс, у которого ни один метод не реализован, все они публичные и нет переменных класса.

Интерфейс нужен обычно когда описывается только интерфейс (тавтология). Например, один класс хочет дать другому возможность доступа к некоторым своим методам, но не хочет себя «раскрывать». Поэтому он просто реализует интерфейс.

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

Можно считать, что любой интерфейс — это уже абстрактный класс, но не наоборот.

Рубрики
ООП ООП "Интерфейс" ООП принцип "Полиморфизм"

ООП Интерфейс «Понятие»

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