#c_sharp #наследование
я хочу что бы в абстрактном базовом классе Base было константное поле которое должно задаваться у каждого потомка Derived1, Derived2 своим значением. UPD: Забыл спросить: поле должно быть статическим? UPD: Переформулирую вопрос. Есть базовый класс В в котором хочу обязать всех потомков реализовывать статическое поле size, которое будет защищено от изменения даже внутри класса. Есть 2 потомка: класс Х и Y. В классе X поле size должно равняться 6. В классе Y поле должно равняться 10.
Ответы
Ответ 1
public class Base { public int ConstValue { get; private set; } public Base(int aConstValue) { ConstValue = aConstValue; } } public class Child1 : Base { public Child1() : base(1) { } } public class Child2 : Base { public Child2() : base(2) { } } @andreycha - А лучше сделать свойство абстрактным. public abstract class Base { public abstract int ConstValue { get; } } public class Child1 : Base { public override int ConstValue { get { return 1; } } } public class Child2 : Base { public override int ConstValue { get { return 2; } } }Ответ 2
Используйте свойство только для чтения: abstract class Player { public abstract string Name { get; } } class Bot : Player { public override string Name => "Robot"; }
Комментариев нет:
Отправить комментарий