Не удается создать экземпляр производного класса MATLAB без ошибок

#matlab #abstract-class

#matlab #абстрактный класс

Вопрос:

Я получаю сообщение об ошибке всякий раз, когда пытаюсь создать экземпляр своего класса Pawn. «Ошибка при использовании Pawn Не удается определить свойство’AvailMoves’ в классе’Pawn’, поскольку свойство уже определено в суперклассе’Шахматная фигура'».

 classdef (Abstract) ChessPiece

    properties (Abstract)
        AvailMoves;
        value;
        white;
        position;
        row;
        column;
    end
end

classdef Pawn < ChessPiece

    properties 
         AvailMoves;
         value;
         white;
         position; %position is a 1 by 2 vector with the piece's position on the board
         hasMoved;
         row;
         column;
    end

    methods 
        function obj = Pawn(position,white)
            %UNTITLED3 Construct an instance of this class
            %   Detailed explanation goes here
            obj.hasMoves = false;
            obj.white = white;
            obj.position = position;
            obj.row = position(1);
            obj.column = position(2);
            obj.AvailMoves = {};
            obj.value = 1;
        end
    end
end
  

Комментарии:

1. Не объявляйте свойства абстрактными в базовом классе, тогда вам не нужно повторно объявлять их в производном классе. Я не вижу смысла абстрагировать свойства.

2. Привет, ЛеоСим! Добро пожаловать в Stack Overflow. Вы все делаете правильно. Какую версию Matlab вы используете и на какой ОС вы работаете? Работает для меня в R2016b и новее на macOS.