Dreams come true!

[JAVA] 객체지향 프로그래밍의 특징 (캡슐화, 상속, 다형성) 본문

자바

[JAVA] 객체지향 프로그래밍의 특징 (캡슐화, 상속, 다형성)

loveYoon 2020. 6. 24. 17:21

1. 캡슐화(Encapsulation)

 

- 외부의 잘못된 사용으로 객체가 손상되지 않도록, 객체의 내부 구조를 감추고, 선택적으로 노출시킨 필드와 메소드만 외부 객체가 이용할 수 있도록 보호하는 것이다.

 

(1) 접근제한자(Access Modifier)

접근제한자를 사용해 객체 필드와 메소드의 사용범위를 제한할 수 있다.

 

(2) Getter와 Setter 메소드

객체의 데이터를 외부에서 마음대로 읽고 변경할 경우 객체의 무결성이 깨어질 수 있기 때문에, 객체 외부에서 직접적으로 객체의 데이터에 접근하는 것을 막는다. 그래서 데이터는 외부에서 접근할 수 없도록 하고(private+필드), 메소드는 공개해서(public+getter/setter 메소드) 외부에서 메소드를 통해 데이터에 접근하도록 한다.


2. 상속(Inheritance)

 

- 상위 객체가 갖고 있는 필드와 메소드 하위 객체에게 물려주어 하위 객체가 사용하게 하는 것이다.

 

- 상속을 이용한 재사용을 통해, 불필요한 중복 코드를 줄이고 쉽고 빠르게 설계할 수 있다. 또한, 유지보수 시간을 최소화할 수 있다.

 

- 자바는 다중 상속을 허용하지 않는다. 즉 여러 개의 부모클래스를 상속할 수 없어서 extends 뒤에는 단 하나의 부모 클래스만 와야 한다.

 


3. 다형성(Polymorphism)

 

- 한 타입의 참조변수여러 타입의 객체를 참조할 수 있도록 하는 것이다. 구체적으로 말하면, 상위 클래스타입의 참조변수로 하위 클래스의 인스턴스를 참조할 수 있고, 인터페이스 타입의 참조변수로 모든 구현 인스턴스를 참조할 수 있다.

 

- 여러 타입의 객체를 하나의 타입으로 관리하니 유지보수에 유리하다. 확장성이 좋은 코드를 작성할 수 있고, 결합도가 강하지 않은 프로그래밍을 할 수 있다.