[Technical Issue] Имплементиране на интерфейс
Здравейте,
Оказва се, че имам голям проблем с разбирането на интерфейсите. Конкретният ми ъпрос е по повод задачата от домашното за наследяване - Company Hierarchy. Създала съм следния интерфейс:
public interface IEmployee
{
decimal salary { get; set; }
Department department { get; set; }
}
който се опитвам да имплементирам тук
По този начин направено обаче, ми казва, че не изпълнявам съответния интерфейс. Огледах домашните на миналия курс и не откривам съществена разлика между това, което някои от колегите са правили и това. Сигурно има щом техните вървят, та ще съм благодарна, ако някой ми разясни какво не правя, както трябва- конкретно - по-общо- защо изобщо съществуват пустите му интерфейси? За да те "задължат" да не изпуснеш някакво свойство или метод ли?
@a.angelov, Така се получи, но трябваше да изтрия полето "private decimal salary". Да разбирам ли, че полета, декларирани в съответния интерфейс са все едно декларирани и в класа, който го наследява?
@ goodlifeinc , базовият клас не би трябвало да пречи- щом могат да се наследяват едновременно и клас, и интерфейс... Абе, подозирам, че основната задача на интерфейсите е да ме гърбят, а останалото са странични ефекти, но това е малко извън темата :)
Само автоматичното пропърти си прави отзад поле /без да го виждаш/. Ако правиш валидация в пропъртито задължително ти трябва и private поле, в което да запазиш стойността /ако не бъркам нещо/.
@a.angelov, искам да кажа, че щом имам автоматично пропърти в интерфейса, който ъм задължена да имплементирам, това значи ли, че няма нужда от съответното поле в конкретния клас, който имплементира? Защото, когато оставя в класа да има прайвът селъри поле, ми казва, че селъри е вече дефинирано веднъж и има конфликт. За това говоря:
public class Employee: IEmployee
// private decimal salary;
public Employee
(int employeeID, string employeeFirstName, string employeeLastName, decimal employeeSalary, Department employeeDepartment)
: base(employeeID, employeeFirstName, employeeLastName)
{
this.salary = employeeSalary;
this.department = employeeDepartment;
}
P.S. CamelCase не е ли всъщност camelCase?