1. 캡슐화 - 접근 제어를 통해 숨기고 싶은 데이터에 대해 정보 은닉 하는 것.
2. 상속 - 코드를 물려주거나 물려받아, 재사용 하는 것.
3. 다형성 - 다양한 형태로 기능을 구현하는것. 오버라이딩과 오버로딩등으로 동적 바인딩을 한다.
4. 추상화 - 객체들의 공통적인 특징을 뽑아 멤버로 만드는 과정.