public virtual bool Equals(Square square) { if (square == null || GetType() != square.GetType()) return false; else if (Type == square.Type && _side == square._side) return true; else return false; }