You must process the options with \ProcessKeyvalOptions:
\begin{filecontents}[overwrite]{democlass.cls}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{democlass}[2022/11/15]
\RequirePackage{kvoptions}
\DeclareStringOption[\the\year{}]{year}
\ProcessKeyvalOptions*\relax
\LoadClass{article}
\def\foo{\democlass@year}
\endinput
\end{filecontents}
\documentclass[year=1999]{democlass}
\begin{document}
\foo
\end{document}
As alternative with a current LaTeX you can use the inbuilt keyval system:
\begin{filecontents}[overwrite]{democlass.cls}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{democlass}[2022/11/15]
\DeclareKeys
{
year .tl_set:N = \democlass@year,
year .default:n = \the\year,
year .initial:n = 2000,
}
\ProcessKeyOptions
\LoadClass{article}
\def\foo{\democlass@year}
\endinput
\end{filecontents}
\documentclass[year=1999]{democlass}
\begin{document}
\foo
\end{document}