티스토리 뷰

IT/Java

Java - Class와 instance

Normal_One 2017. 2. 26. 14:47

 저는 어릴적 부터 공부를 할 때 모든 개념을 이해하고 문제를 풀기 보다는 일단 문제부터 풀고난 후에 "아~ 이 문제는 이렇게 하면 풀 수 있구나" 라고 하며 그 문제를 풀 수 있을 정도의 지식만 남겨 놓은 채 다른 공부를 하곤 했습니다. 이게 고등학교 때까지는 잘 통했는데 대학교에서는 힘들더군요. 그리고 점점 나이가 들면 들수록 이 방식이 옳지 않다는 걸 느끼곤 합니다. 


 제가 교육센터에서 자바를 처음 배울 때도 별 다르지 않았습니다. 수업을 충실히 듣지 않은 건 아니지만 따로 복습을 한 적은 없었고, 수업이 끝난 후 내주는 퀴즈를 해결할 수 있을 정도의 지식만 쌓기 일수였습니다. 그렇게 교육이 끝난 후 지금 개발자로 살면서 든 생각은 역시 저의 공부하는 방법을 고쳐야겠다는 것이었습니다. 원리를 재대로 공부하지 않고서 닥쳐오는대로 해결하다보니 중구난방 식으로 코딩이 짜이곤 했습니다. 짜면서도 이게 왜 이렇게 되는지 잘 이해하질 못하기도 했고 이런식으로 하다간 그저그런 개발자가 되겠구나 싶었습니다. 따라서, 예전에 배웠던 것들을 체계적으로 정리하고 글로 남겨놓고자 이렇게 블로그를 만들게 됐습니다. 



클래스(Class)와 인스턴스(Instance)란?

 서론이 너무 길었네요. 이번에 설명할 것들은 바로 클래스와 인스턴스입니다. 클래스와 인스턴스는 무엇일까요? 네이버에 Class와 Instance로 검색해보니 각각 '수업, 강좌, 학급'과 '사례, 경우'라는 단어 뜻이 나옵니다. 제가 자바를 하면서 이해한 클래스와 인스턴스와는 사뭇 다른 느낌이 듭니다. 뭐, 영어 단어 안에 있는 미묘한 늬앙스들을 전부 한글로 옮기기는 어려운 법이니까요. 그럼 본격적으로 클래스와 인스턴스를 설명하기 전에 아래 예제를 한번 보겠습니다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package blog;
 
public class Ex_class {      
    public static void main(String[] args) {          
        calculator cal = new calculator();          
        cal.plus(35);          
        cal.division(102);          
        cal.minus(61);          
        cal.multiple(93);     
    }
}
 
class calculator {      
    public void plus(int num, int num2) {          
        System.out.println(num + num2); 
    }//더하기          
    public void minus(int num, int num2) {          
        System.out.println(num - num2); }//빼기          
    public void multiple(int num, int num2) {          
        System.out.println(num * num2); }//곱하기          
    public void division(int num, int num2) {          
        System.out.println(num / num2); }//나누기 
}
cs


  자바 스크립트 때도 그렇고 지금도 그렇고 전 참 계산기를 좋아하는 것 같습니다. 위 예제는 간단하게 계산기를 한번 만들어 본 것입니다.
 계산기라는 클래스 안에 더하기, 빼기, 곱하기, 나누기 메소드를 만들어서 프로그램의 메인부에 cal이라는 인스턴스를 만든 후 직접 실행해 보았습니다. 위 예제를 그대로 실행해보면 결과 값이 잘 뜨는 것을 확인할 수 있습니다. 

 여기서 클래스는 메인 밑의 'class calculator'를 의미하고 인스턴스는 메인부 안의 'cal'을 의미합니다. 클래스를 이용해서 인스턴스를 생성하고 그 인스턴스를 이용해 제가 원하는 결과를 이끌어냈습니다. 이해하기 쉽게 설명하자면 클래스는 계산기를 만들기 위한 '설계도'이고 인스턴스는 그 설계도를 통해서 탄생한 '제품'입니다. 이 설계도 'calculator' 를 통해서 완제품인 계산기 'cal'이 만들어 진겁니다. 영어 단어 뜻과 비교하면 뜻이 약간 달라지긴합니다. 굳이 네이버 사전에서 알 맞은 뜻을 찾는다하면 클래스는 '강좌'이고 인스턴스는 그 강좌를 통해 탄생한 '실제 예'라고 할 수 있겠습니다. 클래스와 인스턴스는 java에서 중요한 사상인 OOP(객체 지향 프로그래밍)을 이해하기 위한 기초 개념이라 할 수 있습니다. 따라서, 반드시 이해하고 넘어가야 한다고 생각합니다. 


 제가 클래스와 인스턴스를 이해할 때 가장 도움이 된 사이트는 '생활코딩'입니다. '생활코딩'을 보면 정말 설명이 잘 되있으며 작성하신 분의 열정이 느껴집니다. 제 글을 보고 잘 이해가 안되시는 분은 생활코딩에서 글을 보는게 도움이 될 것 같습니다.




'IT > Java' 카테고리의 다른 글

Java - enum  (0) 2017.03.05
Java - Interface(인터페이스)  (0) 2017.03.05
Java - abstarct class(추상 클래스)  (0) 2017.03.05
Java - Overloading(오버로딩)과 Overriding(오버라이딩)  (0) 2017.03.05
Java - 상속(Inheritance)  (0) 2017.03.05
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday