Private members prevent external code from breaking your object's internal state. If you make balance public in a BankAccount class, anyone can write account.balance = 1000000; without validation.
Keeping data private forces users to call your public functions, where you control how changes happen. You can enforce rules like "balance cannot go negative" or "speed must be non-negative." You can also change internal implementation later without breaking user code, since they only depend on the public interface.