반응형

1.캡슐화
캡슐화 : 객체를 캡슐로 싸서, 그 내부를 보호하고 볼 수 없게 하는 것을 말한다.
대부분의 객체는 메소드(함수)와 필드(데이터 변수)로 구성되어 있다. 클래스라는 캡슐을 사용하여 객체를 표현하며 메소드와 필드를 클래스 내에 구현한다. 이를 통해 객체 내 메소드나 필드에 직접 접근 할 수 없으며, 구현 내용도 알 수 없다. 캡슐화의 궁극적인 목적은 객체 내 데이터에 대한 보안, 보호, 외부 접근 제한 등을 위한 것이다. -> 정보 은닉화

몇몇 메소드와 필드의 경우 객체 외부와의 인터페이스를 위해 노출한다. 이때, getter(), setter() 메소드 등을 사용한다. Project Lombok 사용시 자동 설정 가능.

 

2.상속
상위 개체의 속성을 하위 개체에게 물려줌으로써, 하위 개체가 상위 개체의 속성을 모두 가지고 있음을 의미한다. 자바에서 상속은 부모 클래스(super class)의 속성을 자식 클래스(sub class)가 물려 받는 개념이다. 이미 만들어진 클래스의 필드와 메소드를 물려 받게 함으로써, 자바 코드의 중복 작성을 방지한다. ->  코드의 재사용

코드의 재사용을 위해 상속을 이용했던 과거와는 다르게 최근 POJO(Plain Old Java Object)의 움직임이 보이고 있다. Java EE 등의 중량 프레임워크들 및 여러 계층의 상속으로 생성된 클래스 등을 사용하게 되면서 해당 프레임워크에 종속된 "무거운" 객체를 만들게 된 것에 반발해서 사용되게 된 용어이다. -> 사용하는 클래스가 필요한 기능만을 개발하여, 무거워지지 않도록 설계한다.

 

3.다형성
같은 이름의 메소드 호출에 대해 객체에 따라 다른 동작을 할 수 있도록 구현하는 것을 의미한다.

부모 클래스에서 물려 받은 여러 메소드들을 자식클래스에서 사용시에 발생할 수 있다. 하나의 부모 클래스로부터 상속받은 여러 자식클래스들을 동일한 이름의 레퍼런스을 통하여, 각 자식 클래스에서 추가 및 수정을 통해 재작성한 메소드(메소드 오버라이딩)를 사용할 때 발생할 수 있다.    

 

4.추상화
하나의 객체를 공통의 속성이나, 기능을 묶어 이름을 부르는 것이다. -> 객체에서 공통된 속성이나 행위를 추출하는것.
추상화시에 유의할 점은 다른 객체들과는 구분되는 특징을 추출해야한다. 만일 동일한 속성이나 특징을 가지고 있는 객체나 인터페이스가 있는 경우에는 상속을 통해서 사용을 할 수 있기 때문이다.

반응형