Всем привет, заранее спасибо каждому <3. Так вот, в интерфейсах часто (Если не всегда) к переменным прибавляют {get; set;} как я понял это значит что можно ЧИТАТЬ и ПЕРЕПИСЫВАТЬ значения, но вот я не понимаю зачем это делать если вроде как интерфейс это абстракция. Кто-то делал через интерфейс и Scriptable Objects инвентарь и сделали примерно так
Первый скрипт с интерфейсом
IItems
{
string name {get;}
`И другие переменные`
}
Потом он в другой скрипт который прикреплён к Scriptable Objects присвоил значения к интерфейсу вот так
Scriptable Objects, IItems
{
public string mame => _name; //реализация
[SerializedField]private string _name; //для редактирования значения параметра в СкрОбъект
}
Так вот, нафига это всё сделано, для чего здесь используется интерфейс, почему нельзя без него просто только с [Serialized Field] и потом просто обратится к этому СкриптОбъекту и уже с ним взаимодействовать. Та и ещё одно, куда девается(Как можно присвоить что-то абстракции) то что выделил
Scriptable Objects, IItems{public string name => _name; [Serialized Field]private string _name;}
Как можно к этом обратится
getиsetэто свойства, у них да, можно указать что они будут только отдавать данные, или наоборот, только их получать. Интерфейс - это контракт, который обязательно должен соблюсти тот, кто его реализует. Если в интерфейсе указано свойство сgetиset, то это означает то, что тот, кто будет это реализовывать, обязан будет иметь у себя такое свойство, с таким названием, и сget; set;. Если в интерфейсе указан, например толькоget, то в реализующем классе также должен быть обязательно толькоget, аsetуже на его усмотрение. – EvgeniyZ Nov 14 '22 at 19:27