An object (also called an instance) is a concrete, real entity created from a class — if a class is the blueprint, an object is an actual house built from that blueprint. You can create as many objects from one class as you need, and each has its own independent copy of the properties defined by the class.
class Car {
brand
model
speed = 0
function accelerate(amount) { this.speed += amount }
}
car1 = new Car()
car1.brand = "Toyota"
car1.accelerate(30)
car2 = new Car()
car2.brand = "Honda"
car2.accelerate(50)
print(car1.speed) // 30
print(car2.speed) // 50 — car1 and car2 are completely independent
Each object has its own state (the current values of its properties — car1.speed is 30 while car2.speed is 50) but shares the same behavior (both use the exact same accelerate method logic, defined once in the class).
Key vocabulary to internalize:
- Instantiation — the act of creating an object from a class (
new Car()) - Instance — a synonym for 'object'; 'an instance of the Car class'
this/self— inside a method, refers to the specific object the method was called on, letting the same method code work correctly for every different instance
This one-blueprint-many-instances pattern is what lets OOP scale: you write the Car class once, and can then create thousands of car objects, each independently tracking its own speed, without duplicating any logic.