An access specifier is a defining code element that can determine which elements of a program are allowed to access a specific variable or other piece of data. Different programming languages have their own protocols for access specifiers, as well as defaults for some code elements including both individual variables and classes.
Two of the most common access specifiers are "public" and "private." Where a program may include elements that are public or private by default, programmers can often change their status by defining, or "declaring," the element with either the word "public" or "private."
Programmers define code elements and pieces of data as public or private for various reasons. A public status is good for code elements that are valuable to various outside functions, but for items that can be easily changed, where those changes affect the solvency of the code, a private status can be helpful. There are other pros and cons to private and public access specifiers, including errors and glitches after alterations of public items, and run-time errors related to inaccessible private items.