어떠한 데이터와 그 데이터를 이용하여 특정한 기능을 수행하는
함수를 하나의 캡슐(컨테이너)에 묶어 놓은 것을 의미하는데, 객체지향 개념에서는
이 캡슐을 클래스로써 정의하게 됩니다. 이렇게 캡슐화를 구성함으로써 클래스 멤버로
사용되는 변수 혹은 메서드의 접근을 제한할 수 있습니다. 예를 들어, 캡슐화된 클래스에서
특정 클래스 멤버에 접근 제어자(access modifier)를 사용하여 private로 설정하였다면,
해당 변수 및 메서드들은 위 클래스의 인스턴스 변수를 통한 값의 수정 및 조회를 제한(은닉)
시킬 수 있습니다. 따라서 클래스 정보의 접근 혹은 수정의 권한을 결정한다고 할 수 있습니다.
클래스 선언 시 내부에서 반복적으로 사용되는 코드를 부모(Parent) 클래스로
개별적으로 선언한 후 이를 상속받아 사용할 수 있도록 자식(Child) 클래스를 선언하여
사용하는 것을 의미합니다. 이렇게 함으로써 코드의 분할을 용이하게 해주고 코드의
재사용성을 높일 수 있다는 특징을 가지고 있습니다.
구현된 세부 정보를 숨기는 일반 인터페이스를 지정하는 행위라고 정의합니다.
클래스에서 특정 데이터를 조작하는 기능을 수행하는 메서드가 정의되어 있다면,
해당 클래스를 인스턴스화하여 사용하는 사용자 입장에서는 일반 인터페이스를 이용하여
데이터를 제어할 수 있습니다. 따라서 해당 클래스의 설계자는 클래스 내부의 세부 정보를
사용자에게 노출시키지 않고도 설계자가 의도하는 기능을 사용자로 하여금 수행하게 할 수
있다는 특징이 있습니다.
다형성의 한 예시로, 부모 클래스에서 정의된 메서드를 자식 클래스에서 상속받아
오버라이딩(Overriding) 할 수 있는데, 자식 클래스에서는 부모 클래스 내 메서드의 정해진
규칙에 따라 다양한 형태의 메서드로 재정의할 수 있습니다. 따라서 클래스의 특징은 유지하고
오버라이딩 하는 대상의 구현방식 모양은 다양하게 재정의할 수 있다는 특징을 가지고 있습니다.