A style of object-oriented programming (OOP) in which inheritance occurs via defining ‘classes’ of objects, instead of via the objects alone (compare prototype-based programming).