1. Object-oriented languages divide a program into modules called classes.
2. Each class contains features, which consist of data (fields) and methods.
3. Languages have various rules about what other classes can access the features of a class, these are often based on access modifiers that apply to a class.