Nie wiem czemu tak być musi, bo generalnie tak być nie musi. Nie wiem kto tego wymaga.
Jest istotna różnica między tymi dwoma pakietami, mianowicie W Javie, klasa u Ciebie test jest bez modyfikatora dostępu (czyli bez słowa kluczowego public, protected lub private) ma domyślny poziom dostępu, zwany również poziomem dostępu pakietowego (ang. package-private).
Więc ta klasa nie jest widoczna poza pakietem mypack.xd
Klasy pozostałe są publiczne, dostępne wszędzie, nie muszą być w tym samym pakiecie, są widoczne również w pakiecie mypack.xd
class Balance -> jej instancja, obiekt jest wykorzystywany przez klasę class AountBalance z racji, że obie klasy są publiczne, nawet jak nie będą w tym samym pakiecie, to spokojnie możesz wykonać te linię
Balance[] current = new Balance[3];
natomiast spróbuj dodać teraz do jednej z twoich klas w pakiecie mypackage klasę test
test myTest = new Test(); // tego nie da sie zrobic po za pakietem wiec bedzie blad
chociaż z tego co napisałeś, twoja klasa test i tak znajduje się w dodatkowym pakiecie xd, który znajduje się w pakiecie mypackage
\projekt\mypack\mypack\xd\ ->mypack\mypack jest to pakiet mypack w którym jest pakiet mypack i potem jeszcze pakiet xd.