위 그림을 보면 Dog라는 개체와 현실세계의 개 3마리가 있다. 각각 Bulldog, Beagle, German Shepherd로 전부 다르지만 모두 개에 속해있다.
이처럼 각각 다른 객체이나 그 구조와 특성이 같기 때문에 개라는 개체의 속성을 한데 모아 (추상화) 구조체 (클래스)를 생성한다.
객체지향적 프로그래밍이란 개라는 개체가 가진 속성(필드)과 행위(메소드)를 하나의 구조체에 캡슐화하여 현실세계에 실재하는 객체(Dog1)가, 개가 할 수 있는 행위인 Eat() (인스턴스 메소드)을 호출하는 방식이다.
Dog Dog1Object = new Dog();
X = eat(Dog1Object);
O = Dog1Object.eat();