Как сделать открытым свойство для наследника но закрытым для наследника наследника? - 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.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.867 из 5
Похожие ответы