클래스의 배경이 되는 여러 가지 요소들을 클래스의 기본 배경에서 알아보았다. 데이터타입, 변수, 상수, 할당을 클래스라는 관점에서 어떠한 관련이 있는지를 알아보자. 그리고 클래스의 전신이라 할 수 있는 구조체가 어떻게 관련이 있는지에 대해서 알아보고 실제 클래스가 어떻게 만들어지고
어떻게 사용되어지는지 살펴보자.
이번 글에서 소개하는 내용은 다음과 같다.
    - 클래스란?
    - 구조체로 데이터 타입을 생성하는 방법
    - 클래스로 데이터 타입을 생성하는 방법
    - 클래스만의 특징
    - 클래스 변수를 생성하는 법의 차이

클래스와 객체의 의미는 혼동되는 요소들이다. 처음으로 객체와 클래스를 접했을 때, 이 개념을 이해 하는데 거의 1년 이상 걸린다고 하다. 프로그래머로서 가장 잘 다루어야 하는 부분이지만 너무나도 간단히 책장을 넘겨버리기 때문에 대충 넘어가기 쉬운 부분이기도 하다. 프로그램을 한참 배우고 난 후, 진정한 클래스의 의미에 대해 다시 생각해 볼 때쯤에 이해 할 법한 부분이다. 보통의 자바 Beginner의 경우, 이 개념을 안다면 자바의 절반이상을 깨닫고 있다고 해도 과언이 아니다. 이 장에서 설명되는 대부분의 것들은 앞장의 데이터 타입을 습득하지 않으면 거의 이해 할 수 없게 설명되어 있다. 앞장의 데이터 타입을 한번 읽어보는 것은 좋다.

1 클래스란?

1.1 클래스란?
클래스란 새로운 데이터 타입을 만드는 데이터 타입 생성기이다. 기존의 데이터 타입을 이용하여 새로운 데이터 타입을 만들어내는 것이 바로 클래스의 역할이다. 클래스가 데이터 타입 생성기라는 말만 이해하고 있어도 많은 부분이 해결되는 느낌을 가질지도 모른다.
여러분은 지금까지 클래스로 새로운 데이터타입을 만들고 있었던 것이다. 보통 뭔가를 탐구하면서 뭘 하는지 모르고 일을 하고 있을 때만큼 답답한 순간은 없다. 자바 언어를 조금 공부해 보면 수없이 클래스를 만들고, 그 클래스로 작업을 한다. 그런데 정작 클래스가 뭘 하는 건지 모르고 작업하는 경우가 많다. 여기서 정확하게 정의를 내려 두자.

클래스는 새로운 데이터 타입을 만드는 데이터 타입 생성기이다.

이 명제는 자바뿐만 아니라 C++ 관련 언어를 한다면 누구나 다 기억해야 하는 객체지향언어의 제1조의 원칙에 해당 된다.

1.2 클래스의 지위와 구조
앞장에서 설명한 데이터 타입과 변수와 상수의 구조는 계층구조로 되어 있다. 이 구조를 알고 있다면 쉽게 클래스의 개념에 접근 할 수 있다. 그 구조를 다시 살펴보면 다음과 같다.

데이터 타입과 변수와 상수의 구조

데이터 타입

변수

상수

 무 존재

존재

실존

데이터 타입의 하위에는 변수가 존재하며 변수의 하위에는 상수가 존재하다. 각각의 역할이 없으면 프로그램은 수행 될 수 없다. 그렇다면 클래스는 어느 부분에 속하는 것일까? 위의 구조에서 제일 상위에 존재하는 것이 바로 클래스이다. 클래스는 데이터 타입의 윗부분에 자리를 차지하고 있으며
데이터 타입과 관련이 있다. 그 구조를 다시 만든다면 아래와 같이 나타낼 수 있다.

데이터 타입과 변수와 상수의 구조

클래스

데이터 타입

변수

상수

 무 존재

존재

실존

무엇에 사용하는 것이길래 제일 위에 있을까? 답은 데이터 타입을 새로 하나 만드는 역할을 담당하고 있다. 데이터 타입은 형태는 있지만 존재하지 않기 때문에 무존재라고 칭했다. 그렇지만 클래스는 그 상위레벨에 있기 때문에 아예 무에서 무존재, 즉 무형을 만드는 역할을 한다. 그래서 위의 표에서 무(無)라고 표시했다. 클래스는 신(神)이라고 생각된다. 신은 인간이라는 데이터 타입을 만들었다. 그리고 인간이라는 데이터 타입에 각각의 이름을 부여하여 하나의 객체(변수)로 만들었다. 인간이라는 데이터 타입을 만든 이는 바로 클래스이다. 그래서 클래스는 신이다. 개인적인 생각이다.!! 현재에서 가장 핵심적인 사항은 “클래스는 데이터 타입 생성기의 역할을 한다“라는 것이다. 주제는 잊지말자.

자바에서 제공하는 기본적인 데이터 타입은 int, long, float, double, char…. 등이 있는데 이러한 데이터 타입을 우리는 기본 데이터타입이라고 부른다. 기본데이터 타입의 한계는 하나의 데이터만을 넣을 수밖에 없다는 단점이 있다. 각각의 형태에 해당되는 데이터를 하나만을 담을 수 있는 것이다. 현실 세계의 데이터들은 제일 밑바닥에는 이러한 기본 데이터들로 이루어져 있겠지만 알고 보면 기본적인 데이터를 묶어서 또 다른 형태의 틀을 만든다. 예를 들어 인간이라는 데이터 타입이 있다. 이 데이터 타입의 형태는 여러분이 어렴풋이 생각하는 인간의 형태 그 자체이다. 여기에 변수를 붙이면, 즉 이름을 홍길동이라고 준다면 홍길동은 현실 세계에 공간을 차지하는 하나의 변수가 된다.
    - 인간 홍길동;

자세히 들여다보면 인간이라는 데이터 타입의 밑바닥은 변수로 이루어져 있으며, 많은 변수가 뭉쳐서 하나의 데이터 타입을 이루고 있다. 이와 같이 여러 개의 변수를 묶어서 하나의 데이터 타입으로 생성하는 역할을 하는 놈이 바로 class이다. 인간이 만들어지기 위해서는 클래스에서 아주 다양한 형태의 작업을 해주어야 하다 클래스로 간단히 인간이라는 . 데이터 타입을 만드는 것을 보여주고 있다.

인간 클래스의 디자인
    class 인간{
        String name;
        int age;
        float height;
        float weight;
        등등….
    }

이쯤에서, 다시 한번 class에 대해서 정의를 내리면, 많은 변수들이 뭉쳐서 새로운 데이터 타입을 만들어 내는 역할을 하는 것이 클래스라고 정의를 내린다. 그런데 왜 데이터가 아니고 변수일까? 그것은 인간이 태어나면 각각의 이름과 나이, 키 등을 부여 받는다. 각각이 생성되기 전 단계이기 때문에 생성되는 순간 어떠한 값이 할당 될지 알 수 없으니 즉, 데이터 타입은 형태에서 만들어지는 순간 각각 다른 값을 가져야 하기 때문에 변수의 형태로 데이터 타입 내에 들어가는 것이다.

자바에서는 클래스를 사용하지만, 자바 이전의 C 언어에서는 구조체라는 것을 사용한다. 구 조체는 자바의 전 단계에 데이터 타입을 만드는 놈이었다. 클래스의 할아버지 정도 되는 구조체의 의미를 이해한다면 클래스의 정확한 특징을 이해 할 수 있을 것이다.

1.3 결론
클래스는 데이터 타입을 만들며 그리고 데이터 타입은 변수를 생성하며 변수에는 상수를 할당할 수 있다. 클래스는 새로운 데이터 타입을 만드는 데이터타입 생성기이다. 그리고 다음 장에서 구조체와 클래스 그리고 데이터 타입 생성기라는 측면에서 클래스를 살펴보자.


2 구조체로 데이터타입을 생성하는 방법

2.1 구조체란?
구조체는 클래스가 없던 표준 C에서 시절에 새로운 데이터 타입을 만드는 역할을 담당하고 있었다. 현재 우리가 언급한 데이터 타입은 분명히 하나만의 데이터를 담을 수 있는 데이터 타입이다. “int a=3“ 이라고 했을 때 우리는 a라는 변수에 다른 수를 담고자 한다면 3이라는 값은 사라진다. 즉,
a=5라고 했을 때 a에 들어 있던 3은 없어지고 다시 5라는 수가 a의 메모리에 자리를 잡게 된다. 이러한 측면에서 기본 데이터 타입의 문제점은 단 하나의 데이터를 넣을 수 있다는 것이다. 데이터 타입이 2개의 수를 담을 수 있다고 한다면 어떨까? 표준 C(ANSI C)언어에서는 이를 구조체라는 것을 사용하여 해결하고 있다. 물론, 자바 언어에서는 사용하지 않지만 구조체의 의미는 객체 언어의 역사를 말해 주고 있기 때문에 구조체에 대해 약간의 지식을 가지고 있으면 자바 언어가 어떠한 구조로 되어 있는지 쉽게 이해 할 수 있다 . 구조체의 정확한 문법 구조는 알 필요가 없다. 단순히 아~ 이렇게 만드는구나 정도를 이해하면 된다. 일단 구조체의 예를 살펴보자.

2.2 구조체를 만드는 방법
클래스로 데이터 타입을 만든다고 했다. 구조체는 데이터타입을 생성하는 데이터 타입 생성기 역할을 하고 있기 때문에 클래스와 같은 레벨에 존재한다. 그래서 구조체는 클래스와 동급이다. 구조체는 완벽하게 클래스와 그 의미는 같다. 그리고 초기 구조 또한 클래스와 아주 흡사하다. 구조체의 위치는 아래에서와 같이 제일 위에 존재한다.

구조체, 데이터 타입, 변수, 상수의 구조

구조체

데이터 타입

변수

상수

 무 존재

존재

실존

구조체로 데이터 타입을 생성하는 예를 살펴보자.

구조체 사용의 예
    struct PERSON {
        int age;
        long height;
        float weight;
    }
        family_member;
        struct PERSON sister; // C style structure declaration
        PERSON brother; // C++ style structure declaration
        sister.age = 13; // assign values to members
        brother.age = 7; 

자바 언어는 C++의 문법 구조를 따르고 있으며 C++는 C 언어를 기반으로 하고 있다. C 언어의 구조체는 C++에 와서 완전하게 다른 모습인 class라는 이름으로 발전하여 원래의 구조체와 공존하게 된다. 현재 소개되는 C, C++문법을 잘 살펴보면 특정한 Rule을 찾을 수 있다. 그리고 이러한 Rule은 자바 언어에서도 그대로 사용하게 된다.
위의 구조체에 대한 예를 하나씩 따져 보자. 구조체라는 것은 앞에 struct이라는 키워드를 사용하며 이름을 지정하고 있다. 즉 PERSON이라는 이름으로 구조체를 만든다는 의미이다. 그리고 그 내부에는 3개의 변수를 포함하고 있다. struct 키워드를 이용하여 3개의 변수를 묶어서 PERSON이라고 부르겠다는 것이다. 하나씩 분해해서 보면 다음과 같다.

데이터 타입과 변수와 상수의 구조
    - struct : 구조체를 만드는 키워드
    - PERSON : 구조체로 만들어진 새로운 데이터 타입
    - int age : PERSON 내부의 멤버
    - int height : PERSON 내부의 멤버
    - int weight : PERSON 내부의 멤버

이 부분에서 구조체에 대해 헷갈리지 않게 이해를 잘 해야 한다. 구조체는 새로운 형태의 데이터 타입을 만드는 역할을 한다. 이러한 점에서 구조체는 클래스와 같은 역할을 한다. 여기서 PERSON은새로운 데이터 타입이며 struct은 표준 C 언어에서 제공하는 데이터 타입 생성기이다.

    - 누가 만들었을까?
      그것은 누구나 만들 수 있으며 여기서는 제가 임의의 이름으로 하나 만들었다.

    - PERSON이라는 이름은 무엇일까?
      새로운 데이터 타입의 이름이다.

    - struct는 무엇을 하는 것일까?
      새로운 데이터 타입을 만들 수 있게 해주는 키워드이다.

    - age, height, weight는 새로운 데이터 타입 내부에 존재하는 멤버이다.

정리를 해보자. 기존에는 주어진 데이터타입으로 데이터를 하나만 넣을 수 있는 변수를 선언하여 하나의 데이터만을 넣어 사용했다. 이제는 달라졌다. 구조체를 이용하여 PERSON이라는 새로운 데이터타입을 만들었으며, 그 속에는 3개의 변수를 포함하고 있으며, 3개의 변수들을 대표하는 이름을 바로PERSON으로 하겠다는 것이다.

앞에서 언급한 데이터 타입을 상기시켜보자. 데이터 타입은 어디에 사용한다고 했나? 바로 변수를 선언할 수 있다는 것이다. 위의 만들어진 데이터 타입 PERSON을 이용하여 아래와 같이 변수를 선언했다.
    PERSON brother;
이와 같이 변수를 하나 만들었을 때 메모리가 하나 생성된다. 여기서, 변수이름은 누가 뭐래도 brother이다. 하지만 아주 곤란한 문제가 발생한다. 기존의 방식대로라면 이 속에 있는 3개의 변수에 값을 넣을 수가 없다. 그래서 나온 것이 점의(.) 원리이다. 그냥 단순히 이해하자면 소속이라는 의미
이다.
    PERSON brother;
    brother.age =100
    brother.height=170L
    brother.weight=67.5F

이와 같이 사용자가 임의로 새로운 데이터타입을 만들며 그리고 그 타입을 사용할 수 있게 하는 것이 의 구조체이다 구조체의 의미는 여기까지만 ANSI C . 알아 두자. 더 이상 구조체는 자바에서 사용 되지 않는다. 하지만 이 구조체야 말로 자바 언어에 대한 핵심의 의미를 그대로 담고 있으니 그 느낌 만큼은 정확히 알아 두어야 한다.

2.3 결론
구조체가 클래스와 사용방법이 동일하다면 왜 굳이 구조체를 이용하지 않고 새로운 형태의 클래스를 만들었을까? 바로 이 차이점이 클래스만의 특징이며 객체 지향언어의 장점이다. 앞으로 구조체보다 왜 클래스가 나은가를 알게 된다면 클래스의 개념을 어느 정도 파악하고 있는 것이다.
뭐가 다른지 답부터 보고 다음으로 넘어가자. 구조체와 클래스는 데이터 타입의 생성이라는 측면에서는 같은 역할을 한다. 클래스가 구조체보다 강력한 점은 접근 제어, 상속의 개념 그리고 메서드의 활용 부분이 클래스에 추가 되었다는 점이다. 자바를 배운다는 것은 바로 클래스의 장점을 배우는 것이다.

3 클래스로 데이터 타입을 만드는 방법

3.1 배경
위에서는 구조체로 데이터 타입을 만드는 방법에 대하여 알아보았다. 이 데이터 타입을 만드는 방법을 자바의 클래스라는 측면에서 살펴보자. C 언어의 구조체와 자바의 클래스가 같은 역할을 한다면 확장된 클래스가 아닌 기본적인 자바 클래스는 구조체와 그 모습이 동일하다는 것을 밝히면서 클래스의 의미를 다시 한번 상기 시켜 보자.

3.2 클래스 만들기
먼저, 앞에서 만들어 본 구조체와 똑같은 데이터 타입을 자바 클래스로 만들어 보자. 아래의 클래스는 앞 절에서 나온 구조체와 철자도 틀린 것이 별로 없다.
PERSON.java
    public class PERSON {
        public int age;
        public long height;
        public float weight;
    }
C:\examples\1.클래스의 개념>javac PERSON.java
C:\examples\1.클래스의 개념>dir
C:\examples\1.클래스의 개념 디렉터리
2001-06-03 09:29p <DIR> .
2001-06-03 09:29p <DIR> ..
2001-06-03 09:29p 246 PERSON.class
2001-06-03 09:29p 90 PERSON.java

이 파일을 컴파일 했을 때 우리는 확장자를 .class 가진 파일을 하나 얻을 수 있다. 약간 다르긴 하지만 public을 모두 제거하고 struct 키워드를 class로 바꾼다면 모든 면에서 구조체와 똑같다. 3개의 변수를 담고 있는 새로운 데이터 타입이 만들어진 것이다.
위의 class 키워드로 만든 데이터 타입을 실제 자바로 실행해 볼 수 있는 main 메서드를 포함한 코드를 제작해 보자. 자바에서는 main 메서드를 포함하고 있는 클래스가 실행 클래스가 되며 실행은 “java 클래스의 이름“으로 하고 있다. main 메서드를 포함한 코드는 다음과 같다.

Test3.java
    public class Test3 {
        public static void main(String[] args) {
            PERSON brother = new PERSON();
            brother.age =100;
            brother.height = 170L;
            brother.weight = 67.0F;
            System.out.println("age:" + brother.age);
            System.out.println("height:" + brother.height);
            System.out.println("weight:" + brother.weight);
        }
    }
    C:\examples\1.클래스의 개념>javac Test3.java
    C:\examples\1.클래스의 개념>java Test3
    age:100
    height:170
    weight:67.0

구조체와 클래스의 차이점은 현재의 자바 소스에서는 전혀 찾아 볼 수 없다. 아직 클래스의 장점들이 나타나고 있지 않기 때문에 별다른 차이점을 느끼지 못할 것이다. 하지만 그 차이점들이 객체 지향언어의 매력이라는 것을 미리 짐작 할 수 있을 것이다.

이제, 클래스와 구조체를 비교해 보자. 아래의 표는 클래스와 구조체의 비교를 잘 보여 주고 있다.

클래스와 구조체의 비교

클래스

구조체

종류 

클래스

클래스로 만든 데이터 타입

클래스 변수

상수

구조체

구조체로 만든 데이터 타입

구조체 변수

상수

무 존재

존재

실존


이 표에서 나타내고자 하는 것은 클래스와 구조체는 차이가 없다는 것이다. 클래스는 구조체의 복사 판일 정도로 그 개념은 비슷하다.

3.3 결론
결론적으로, 클래스는 구조체를 발전시켜 만든 것이라고 봐도 될 것이다. 여기서 클래스는 당연히 최고 상위에 존재하는 신적인 존재이며 객체 지향적인 개념에서 새로운 데이터 타입을 만든다는 것은 당연한 일이지만 고전 프로그래머에게는 약간 생소한 접근 방식일 수도 있다. 그렇다면 과연 차이점은 무엇일까? 그 차이점이 자바의 큰 힘이며 매력인 것이다. 다음 장에서는 클래스와 구조체의 차이점인 클래스만의 특징을 알아보자.

4 클래스만의 특징

4.1 클래스만의 특징 소개
구조체에는 없지만, 클래스에만 있는 특징이 바로 클래스와 구조체의 차이점이다. 클래스만의 특징은 아주 다양하게 열거할 수 있지만 구조체와의 차이점에서 찾아 볼 수 있는 단순하면서 중요한 개념들만 열거한다면 다음과 같다.
구조체와 다른 클래스만의 특징들
    - 선언과 메모리 할당
    - 데이터의 접근 방법(private와 public)
    - 멤버로 메서드 포함
    - 상속의 개념 적용

간단해 보이지만 자바 언어의 모든 특징을 전부 내포하고 있다. 메모리의 할당의 문제는 어차피 구조체이든 클래스이든 만들어지면 변수를 선언하고 메모리를 할당해야 하는 것은 마찬가지이다. 사용 방법만 약간 다를 뿐이다. 데이터의 접근과 메서드의 포함, 상속개념의 적용은 기존의 절차적 프로그래밍 기법에 반기를 드는 혁명적인 일이다. 클래스의 특징들을 알아보자.

4.2 클래스의 특징들
기본적으로 구조체에서는 메서드를 포함하지 않고 일반적인 데이터타입의 변수를 포함할 수 있다. 하지만 클래스는 한 단계 더 나아가 메서드까지 포함하고 있다. 그리고 구조체로 새로운 데이터 타입을 만들었다면 새로운 데이터 타입 내에 들어 있는 모든 요소들은 기본적으로 public이다. 하지만 클래스에서는 private와 public의 차원에서 접근제어를 구분하고 있다. 점찍고 값을 할당할 수 있다면 public이고 없다면 private이다. 마지막으로 상속의 개념은 클래스만의 막강한 힘을 주고 있다. 만들어져 있는 데이터 타입에 대한 재사용이란 측면에서 상속은 꿈의 기술이다.
C++ 언어의 창시자인 Bjarne Stroustrup은 여러 개의 변수를 조합하여 많은 양의 데이터를 담을 수 있는 새로운 데이터 타입을 만드는 방법을 제안하였으며, 그것을 확장하여 변수들의 관계를 정의하는 메서드를 포함시킴으로써 새로운 모델을 만들었는데 이것이 바로 클래스이다. 그리고 각각의 데이터 타입들간의 상속구조를 포함시키면서 Object Oriented Programming 기법의 발전된 모델을 제시하고 있다.

4.3 결론
클래스 내부에 접근제어, 메서드, 상속의 개념이 들어가면 그 규칙을 유지하고 지키기 위해서 보다 복잡한 객체개념이 들어가게 된다. 클래스 구조를 유지하기 위한 규칙을 배우는 것이 바로 자바 언어를 배우는 것으로 보아도 될 것이다. 앞으로 여러분들은 접근제어, 메서드 그리고 상속을 활용하여 새로운 클래스를 디자인하고 그 클래스를 잘 사용하는 방법, 즉 다른 사람들이 만들어 둔 클래스를 활용하여 자신의 클래스로 확장하는 방법을 배우게 된다.

5 클래스 변수를 생성하는 방법의 차이
5.1 서론
구조체와 클래스의 차이점 중 여기서는 변수를 생성하는 방법의 차이에 대하여 알아보자. 구조체와 클래스는 생성하는 방법에 있어서 차이점을 보인다. 아주 기본적인 사항이지만 클래스를 알겠다고 한다면 이것을 무시할 수는 없다.

5.2 클래스 변수를 생성하는 법
일단 구조체와 클래스의 생성의 방법의 차이점에 대해서 알아보자. 구조체와 클래스의 생성방법은 아래와 같다.

사용자 정의 데이터 타입의 생성하는 방법

구조체 변수의 생성 클래스 변수의 생성

PERSON brother;

PERSON brother =  new PERSON()

이 두 가지에 분명 다른 방법을 사용하고 있다. 구조체에서는 선언만 해 주었다. 하지만, 클래스에서는 new 연산자라는 것을 사용하고 생성자 메서드를 명시해 주어야 한다.

자바의 클래스 개념에서는 반드시 연산자로서 new 메모리를 생성하는 부분이 나와야 한다. 만약 “PERSON brother“처럼 단순히 선언만 해 준다면 절대 메모리는 생성되지 않는다. 이것은 기존의 C와 C++의 차이점이다.
참고로 C++ 언어에서는 new를 했다면 반드시 delete를 해서 메모리를 해제해 주어야 하지만 자바 언어에서는 이것을 쓰레기 수집기를 사용하여 메모리를 자동으로 해제 해 주기 때문에 delete 연산자는 사용하지 않는다.
생성자 메서드라는 것을 호출해 주어야 하는데 이 생성자 메서드는 무조건적으로, 반드시 호출해 주는 것을 원칙으로 한다. “PERSON()“이란 놈이 바로 생성자 메서드인데 여기서는 생성자 메서드라고만 언급하고 다음의 The Class에서 아주 심도 깊게 다루게 될 것이다. new와 생성자 메서드의 기능은 new 연산자를 이용하여 메모리를 생성하고 생성자 메서드를 이용하여 멤버필드의 초기화 작업을 해 주는 것이다. 자바에서 사용하는 클래스에 대한 변수선언을 하는 부분인 “PERSON brother =
new PERSON()“을 분해 해 보면 다음과 같다.
자바 클래스 데이터 타입의 변수 선언과 메모리 할당
    - PERSON : 클래스로 생성한 데이터 타입
    - brother : PERSON 데이터타입으로 선언한 변수
    - new : 메모리를 생성하는 연산자
    - PERSON() : 메모리 생성 후 초기화 작업을 담당하는 생성자

아주 간단하다. 하지만 보통의 책에서는 그냥 new라고 설명하고 있으며 생성자 메서드와 같이 사용 한다고 되어 있지만 그 내부의 의미는 아주 조직적이다. 이 부분은 뒤에 new 연산자와 생성자 메서드를 다룰 때 자세하게 언급하도록 하겠다.

5.3 결론
이 절에서는 클래스 변수를 만드는 방법에 대하여 알아보았다. 클래스는 변수이름만 주는 것이 아니라 new를 이용하여 메모리까지 생성 시켜주어야 한다는 것을 배워 보았다. 이점에서 클래스는 기존의 언어에서보다 메모리의 핸들을 보다 더 정확하게 하겠다는 의미를 내포하고 있다. 그리고 메모리가 있느냐 없느냐는 자바를 공부할 때 아주 중요한 부분을 차지한다. 프로그램할 때 가장 많이 접하게 되는 에러가 바로 메모리가 없다는 Null Point Exception이다. 이 에러는 객체에 메모리가 없는데 사용하였다는 에러이다. 이것은 프로그램을 보다 명확하게 해주는 역할을 한다.

6 마무리
자바의 가장 기본적인 원리인 데이터 타입의 이용, 변수의 선언, 메모리의 할당 그리고 초기화 작업을 한꺼번에 전부 보여주는 부분이 바로 “PERSON brother = new PERSON()“이라는 한 줄의 소스이다. 이 글에서 설명할 수 있는 클래스의 기초 개념 또한 포함하고 있기 때문에 여러분은 이 한 줄의 의미를 제대로 아는 것이 무엇보다 우선한다. 클래스의 특징인 선언과 메모리의 할당이라는 관점에서 클래스의 특징을 먼저 알아보았으며 다음 장으로 넘어가면서 데이터의 접근제어(private와 public), 멤버로 메서드 포함에 대해서 자세하게 알아본다. 구조체와 구별되는 클래스의 접근제어와 클래스내의 메서드 포함은 3장의 The Class에서 상세하게 다루게 될 것이며, 4장에서는 상속과 함께 클래스의 재사용이라는 측면에서 클래스의 개념을 배우게될 것이다. 3, 4장에서 진정한 클래스의 느낌을 얻어보자.

+ Recent posts