#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.