У класса "B" нету поля "а", и я читал что приватные поля не наследуются, как можете это объяснить?
Это значит, что такое поле у B как бы есть, но из-за того что оно приватное - доступ к нему имеют только методы родителя.
Класс B в вашем случае передаёт значение в конструктор родителя, чтобы инициализировать это поле.