Как сделать открытым свойство для наследника но закрытым для наследника наследника? - C#
Формулировка задачи:
Есть класс GameObject в котором есть свойство Coordinates
Класс Animal наследуется от GameObject и должен содержать метод MoveTo который изменяет Coordinates почутьчуть с учётом скорости животного
Класс Rabbit наследуется от Animal
Суть в том что Rabbit не должен иметь возможности изменять coordinates как ему вздумается. Он может изменять свои координаты только используя метод MoveTo доставшийся по наследству от Animal.
Если сделать свойство Coordinates private, то Animal не сможет с ним работать в методе MoveTo
Если сделать это свойство protected, то Rabbit сможет менять координаты как захочет.
Как реализовать такую схему, соблюдая принципы ооп?
Решение задачи: «Как сделать открытым свойство для наследника но закрытым для наследника наследника?»
textual
Листинг программы
public class SomeCoordinateObject { // your own structure } public interface IMoveableGameObject { void MoveTo(SomeCoordinateObject coordinate); } public class GameObject: IMoveableGameObject { protected SomeCoordinateObject Coordinate { get; set; } public void MoveTo(SomeCoordinateObject coordinate) { throw new NotImplementedException(); } } public class GameRabbit : GameObject { public void MoveTo(SomeCoordinateObject coordinate) { throw new NotImplementedException(); } } // где-то там: GameRabbit gr = new GameRabbit(); //доступен только MoveTo.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д