Jay's Developer Note

[JAVA] 객체지향 언어의 특징 본문

JAVA

[JAVA] 객체지향 언어의 특징

Jay(J) 2022. 2. 8. 01:44
728x90

객체지향 언어의 특징

객체지향은 Object-Oriented 라고 하며 객체가 중심이 됨을 뜻한다.

객체지향 프로그래밍은 OOP(Object-Oriented Programming) 라고한다.

 

객체지향 언어의 특징들을 자동차에 빗대어 표현해볼까 한다.

캡슐화 : Encapsulation

 - 캡슐화는 객체의 속성과 속성을 처리하는 메소드를 클래스로 묶어서 사용할 때 제공된 인터페이스만 사용할 수 있도록 열어준 것이다. 이때 객체의 속성과 메소드에 접근을 제한하여 외부에서 접근 가능한 것과 내부에서만 접근 가능한 것을 구분 짓는 접근 제어자를 사용하여 정보 은닉이 가능해진다.

 

자동차에 빗대어보면 운전자에게는 기어를 변속할 수 있는 레버가 주어진다. 운전자는 차 내부에서 무슨 일이 일어나는지 알 필요 없이 레버만 변속해주면 된다.

클래스는 캡슐화된 구조를 가진다

상속 : Inheritance

 - 상속은 말 그대로 부모-자식 관계를 형성하여 부모에 있는 속성과 메소드를 자식에게 물려줄 수 있는 개념이다. 마찬가지로 접근 제어자를 통해 제한을 둘 수 있다. 부모-자식 관계이기 때문에 부모:자식 은 1:N 관계이다.

 - 부모는 상위 클래스, 자식은 하위 클래스라고 부른다.

 

자동차에 빗대어보면 자동차라는 카테고리 안에 경차, 소형차, 중형차 등등 모두 자동차라는 공통 부모가 있는 것을 의미한다.

부모는 N개의 자식을, 자식은 1개의 부모를 가진다

추상화 : Abstraction

 - 추상화는 공통의 속성들을 묶어서 클래스화한 것을 의미한다.

 

자동차라는 카테고리로 공통점들을 뽑아내는 것이 추상화이다.

보통 공통점을 부모 클래스로 추상화해서 사용한다

다형성 : Polymorphism

 - 다형성은 객체의 메소드 형태가 다양하다는 것을 의미한다. 대표적으로 오버로딩(overloading)과 오버라이딩(overriding)이 있다.

 - 오버로딩 : 동일한 클래스 내에서 동일한 이름의 메소드를 매개 변수의 개수나 타입을 다르게 선언하는 것이다.

 - 오버라이딩 : 상속 관계에서 자식 클래스에서 부모 클래스에 있는 메소드를 가져와서 자식의 입맛에 맞게 재정의하여 사용하는 것을 의미한다.

 

자동차에 빗대어보면 오버로딩은 '연료를 넣는다' 라는 메소드가 있는데, 차의 종류에 따라 가솔린, 디젤, LPG 등으로 나뉠 수 있다. 오버라이딩은 '연료는 넣는다' 라는 메소드를 자식 클래스에서 상속받아서 얼마를 넣는지를 자식이 다시 재정의해서 사용하는 것이다.

같은 이름의 메소드가 여러 개인 오버로딩
자식이 가져다가 다시 정의해서 쓰는 오버라이딩

728x90