eine Klasse hat immer Zugriff auf ihre eigenen Felder.
Das hat sie ja. Der Idee ist eben, die Wirkung eines Zugriffs zu kontrollieren. In diesem Fall ist das die Begrenzung auf einen Mindestwert bei Zuweisung. Dafür wird eben ein eigener Typ verwendet.
Das ist in der Tat ganz ähnlich wie bei Nullable-Types. Da wird ein vorhandener Datentyp auch um eine bestimmte Funktionalität ergänzt.