메뉴
brunch
매거진
JAVA 그림책
실행
신고
라이킷
11
댓글
공유
닫기
You can make anything
by writing
C.S.Lewis
브런치스토리 시작하기
브런치스토리 홈
브런치스토리 나우
브런치스토리 책방
계정을 잊어버리셨나요?
by
그림으로 보는 IT 이야기
Sep 30. 2024
클래스(Class)에 대해 알아봅시다.
* 이 내용은 철저히 초심자를 위해 알기 쉽게 설명하는 것을 목적으로 하고 있습니다.
* 더 정확하고 자세한 개념은 다른 고수님들의 글들을 참고하시길 바랍니다.
* 그리고 이 글에서는 코드를 다루고 있지 않습니다.
클래스부터는 자바의 장벽을 느끼게 된다고 합니다.
클래스에서부터 시작되는 캡슐화, 상속, 다형성, 추상화 등의 개념 때문에 그런 것인데 전혀 걱정할 필요 없습니다.
하나씩 실생활의 상황과 대입하여 풀어가다 보면 모두 이해할 수 있는 개념들입니다.
우선 그 시작인 클래스에 대해서 알아보도록 하겠습니다.
OOP의 개념은 각 소스를 부품처럼 이용한다는 것이라고 했습니다.
그리고 그것을 잘하기 위해 만들어진 언어가 바로 JAVA입니다.
그래서 자바는 ‘어떻게 하면 남의 부품을 잘 가져다 쓸 수 있을까?’라는 것에 초점을 맞추면 그 개념들이 잘 이해되실 것입니다.
다시 돌아와서 우리가 무언가를 조립하기 위해 여러 부품을 사용한다고 가정해 봅시다.
이때 각 부품들이 종류별로 잘 정리되어 있다면 조금 더 편히 사용할 수 있지 않을까요?
즉, 다른 부품을 잘 사용하기 위해서는 분류가 필요합니다.
그래서 Java는 class라는 분류(
class
ification) 체계가 존재합니다.
Class는 각종 method와 변수 등을 담는 분류(classification)입니다.
그러므로 class의 이름은 어떤 변수와 함수의 종류를 대변하는 이름이어야 한다는 걸 잊지 마세요.
이런 클래스들을 모아놓은 폴더가 바로 패키지(package)입니다.
우리가 일반적으로 작성해 놓은 문서들을 어떤 식으로 폴더를 만들어 정리해 놓는지를 떠올려보면 보다 쉽게 이해하실 수 있습니다.
다만
우리가
사용하는
파일
경로와
java에서
사용하는
경로의
표기법은
조금 다릅니다.
객체화
클래스라는 분류체계 안에 있는 메서드와 변수를 사용하기 위해서는 객체화를 진행해야 합니다.
여기서 객체화란 원본인 클래스를 복사하여 사용하는 것을 의미합니다.
위 그림은 ExSample이라는 클래스 복사(객체화)하여 ExSample 형태의 변수에 넣는 과정의 코드입니다.
T형 메모리 구조로 바라본 객체화
조금 깊이 있게 표현하자면, 객체화는 Static 영역에 저장된 원본 클래스를 복사하여 Heap 영역으로 가져오는 것입니다.
위의 그림은 메모리의 구조를 그린 것인데 각각 Static과 Heap, stack 영역의 경계가 T 모양으로 생겼다 하여 T 형 메모리 구조라 부릅니다.
이렇게 클래스의 객체화(복사)에 대해서 알아보았습니다. 그런데 한 가지 의문이 남습니다.
왜 굳이 클래스를 복사해 가며 써야 하는 것인가?
그 이유는 우리가 문서 등을 나눠 줄 때
왜 복사해서 나눠주는지를 생각해 보면 간단히 이해할 수 있습니다.
만약 하나의 문서를 여럿이 사용하다가 누군가가 문서에 낙서를 한다면 어떻게 될까요? 이 문서를 사용하는 모든 사람이 그 낙서를 보게 될 것입니다.
또는 문서 내용이 모두에게 왜곡될 수도 있겠죠?
하지만 각각 복사해서 나눠 준다면, 누군가가 낙서를 한다 해도 본인만 해당 낙서를 볼 뿐이지 나머지 사람들에게는 아무런 영향을 주지 않습니다.
이상으로 클래스에 대해서 알아보았습니다.
어떤가요? 알고 보면 클래스와 객체화라는 거 별거 아니죠?
일반적으로 어렵다고 하는 자바의 개념들도 이렇게 알고 보면 어렵지 않습니다.
앞으로 더 많은 개념들도 이렇게 하나씩 배워나갑시다!
keyword
프로그래밍
클래스
자바
브런치는 최신 브라우저에 최적화 되어있습니다.
IE
chrome
safari