본문 바로가기
개발/Java

[Java] 자바와 객체 지향 (1)

by devhooney 2022. 8. 1.
728x90

스프링 입문을 위한 자바 객체 지향의 원리와 이해를 읽고 간단한 정리.

1. 객체 지향의 4대 특성

- 캡슐화: 정보 은닉

- 상속: 재사용

- 추상화: 모델링

- 다형성: 사용 편의

 

2. 클래스 : 객체 = 붕어빵틀 : 붕어빵 X!!!!

클래스 객체명 = new 클래스();

- 붕어빵틀과 붕어빵이 아닌 개념과 실체로 설명했다. 예전에 배웠을 때 보다 훨씬 이해가 잘되는 문장이다.

 

3. 추상화 : 모델링

- 추상화는 모델링이다.

객체 지향의 추상화는 곧 모델링이다.

- 객체: 세상에 존재하는 유일무이한 사물

- 클래스: 분류, 집합 같은 속성과 기능을 가진 객체를 총칭하는 개념

- 추상화: 구체적인 것을 분해해서 관심 영역(애플리케이션 경계)에 있는 특성만 가지고 재조합하는 것 = 모델링

애플리케이션 경계 병원 애플리케이션 은행 애플리케이션
사람이란 사람은 환자. 사람은 고객
클래스 모델링 시력
몸무게
혈액형
나이
직업
연병

 

- 추상화라는 단어에 어려움을 갖고 있었는데, 이번 기회에 어려움을 없앨 수 있었다. 이런 이해를 하고 코딩하면 코드가 더 깔끔해지지 않을까 생각한다.

- 책에선 미키마우스, 제리를 이용해서 추상화를 설명한다.

- 이 둘의 나이와 국적, 이름, 꼬리 등을 이용해서 추상화를 한다.

// 추상화 결과
public class Mouse {
    public String name;
    public int age;
    public int countOfTail;

    public void sing() {
    	System.out.println(name + "이 운다. 찍찍!");
    }
}

- 추상화 이외에 T메모리에 대한 설명을 하는데, 코드가 한줄 한줄 진행될 때마다, 힙, 스택, 스태틱 영역에 메모리가 저장되었다가 가비지 콜렉터에 의해 지워지고 하는 과정을 이해할 수 있었다.

이름 다른 이름 T 메모리
static 변수 클래스 [멤버] 속성, 정적 변수, 정적 속성... 스태틱 영역
인스턴스 변수 객체 [멤버] 속성, 객체 변수... 힙 영역
local 변수 지역 변수 스택 영역(스택 프레임 내부)

- 참고

스태틱: 클래스 저장

스택: 메소드 저장

힙: 객체 저장

 

728x90

 

4. 상속: 재사용 + 확장

- 상속은 강력하다.

상속은 is a kind of이다.

- 예시

하위 클래스 is a kind of 상위클래스

펭귄 is a kind of 조류 -> 펭귄은 조류의 한 분류더,

 

- 꼭 기억하기

(1) 객체 지향의 상속은 상위 클래스의 특성을 재사용하는 것

(2) 객체 지향의 상속은 상위 클래스의 특성을 확장하는 것

(3) 객체 지향의 상속은 is a kind of 관계를 만족해야 함

 

5. 상속과 인터페이스

- 상속과 인터페이스 비교

(1) 상속

상속 관계: 하위 클래스 is a kind of 상위 클래스

해석: 하위 클래스는 상위 클래스의 한 분류다.

예제: 고래는 동물의 한 분류다.

 

(2)인터페이스

인터페이스: 구현 클래스 is able to 인터페이스

해석: 구현 클래스는 인터페이스할 수 있다.

예제: 고래는 헤엄칠 수 있다.

 

- 인터페이스는 "무엇을 할 수 있는"이라는 표현 형태로 만드는 것이 좋다.

예시

(1) Serializable: 직렬화할 수 있는

(2) Runnable: 실행할 수 있는

 

- 상위 클래스는 하위 클래스에게 물려줄 특성이 많을 수록 좋다!

- 인터페이스는 구현을 강제할 메소드의 개수가 적을수록 좋다!

 

728x90

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

[Java] 자바가 확장한 객체 지향  (0) 2022.08.04
[Java] 자바와 객체 지향 (2)  (0) 2022.08.03
[Java] Map안에 Map 안에 List 만들기  (0) 2022.07.19
[Java] 트리  (0) 2022.07.14
[Java] 정렬 (2)  (0) 2022.07.13