개발/Spring

객체지향 핵심 키워드 (자바의 신 요약본 - 0)

728x90

객체지향 주요 개념

 

● 클래스Class

● 상태state와 행위behavior

● 캡슐화Encapsulation

● 메시지Message

● 객체Object

● 상속Inheritance

● Overriding

● 다형성Polymorphism

● Overloading

 

이 위에 키워드의 정의를 명확하게 하고자 정리해보고자 한다.

 

클래스(Class)

 

“상태”와 “행위”를 갖는 자바의 기본 단위를 의미한다.

객체의 상태를 나타내는 필드(field)와 객체의 행동을 나타내는 메소드(method)로 구성

즉, 필드(field)란 클래스에 포함된 변수(variable)를 의미합니다.

또한, 메소드(method)란 어떠한 특정 작업을 수행하기 위한 명령문의 집합이라 할 수 있습니다.

 

 

상태state와 행위behavior

 

어떤 사물을 나타낼 때에는 상태와 행위로 구분하여 표시하는 것이 가능하다. 자바에 서 “상태”는 클래스나 인스턴스 변수로, “행위”는 메소드로 표현할 수 있다.

 

public class Common {
 private int state; 상태
 public void setState(int newState) { 행위
 //내용 생략
 }
}

 

캡슐화(Encapsulation)

 

연관된 상태와 행위를 결정하는 기능을 묶어 주는 것을 의미. 이렇게 묶어주면 기능을 클래스 밖에서 접근 가능한 대상을 제한하는 정보 은닉이 가능함.

 

그리고 하나의 객체를 위한 코드가 다른 객체를 위한 코드와 무관하게 수행할 수 있는 모듈화(하위 단위의 파일로 묶는 행위)가 가능해짐. 

(관심사의 분리)

 

메시지(Message)

 

메소드에서 다른 메소드를 호출할 때 전달하는 값을 메세지라고 한다. 자바에서는 매개 변수들이 여기에 속한다. 위의 코드에서 newState가 메세지를 의미하는 매개변수이다.

 

 

객체(Object)

 

클래스는 사물의 단위를 의미하지만, 객체는 각 사물을 의미함.

책은 클래스이고, <자바의 신>은 책 중의 하나의 책을 의미하는 객체라고 볼 수 있음.

 

 

상속

 

부모에 선언된 변수나 메소드에 대한 사용권을 갖는 것

extends를 사용하여 확장하거나, implements를 사용하여 구현한 경우

 

 

다형성

 

이 세상에 부모와 자식이 똑같을 수 없고, 자식들도 같을 수 없다.

마찬가지로 자바에서는 부모 클래스에서 파생된 자식 클래스들의 기능이 각기 다를 수 있다는 특징을 의미함

 

 

FirstChild, SecondChild에 있는 method()는 다른 기능을 수행해도 무관하다는 것이 다형성

 

 

 

Overriding

부모 클래스에 선언되어 있는 메소드와 동일한 선언을 갖지만 구현이 다른 것을 의미함.

자바에서 다형성을 제공하는 하나의 방법이 바로 Overriding. 함수를 덮어쓰는 것.

 

 

Overloading

메소드의 이름은 동일해도, 매개 변수들을 다르게 하는 것을 의미한다. 그래서, 동일 한 기능은 하지만, 메소드에 넘겨줄 수 있는 매개 변수의 타입을 다양하게 함으로써 메소드를 사용하는 다른 개발자가 쉽게 구현할 수 있게 해준다. 예를 통해 살펴보면

getData() 메소드는 메소드의 매개 변수에 따라서 셋 중에 호출되는 메소드가 달 라진다. 이렇게 구현한 것이 바로 Overloading이다.

 

이름이 같지만 매개변수에 따라 다른 함수를 로드 해온다고 생각하면 됨.

'개발 > Spring' 카테고리의 다른 글

JIT란?  (0) 2021.02.27
자바(JDK)의 버전별 차이 JDK 1.4  (0) 2021.02.27
자바(JDK)의 버전별 차이 (JDK 1.0 ~ 1.2)  (0) 2021.02.27
자바(Java)의 역사  (0) 2021.02.27
왜 Static변수를 난발하면 안될까?  (0) 2021.02.25