Access specifiers control who can access class members. The private: label makes everything after it inaccessible from outside the class. Only member functions can read or modify private data.
This is the default for classes. The public: label creates publicly accessible members. Users of your class can call public functions and access public variables directly. public void drive(); lets anyone call myCar.drive(); There's also protected:, which makes members accessible to derived classes but not external code.
Use private for data, public for interface functions, and protected when inheritance needs access.