자바의 강점! 클래스를 이용하자 편.

이번 시간에는 클래스에 대해서 이야기 해보도록 하겠습니다.
지금까지의 이야기에서 클래스 라는 개념을 아주 간단하게 설명은 했었지만
실제로 클래스를 활용을 많이 하지는 않았죠.

그럼 클래스에 대해서 알아봅시다.

지금 까지의 소스는 클래스가 하나였습니다. 일단 기본 소스를 보도록 합시다.

public class ClassTest {

    public static void main(String args[]) {

        System.out.println("안녕하세요");

     }

}


위의 소스와 같았지요. 근데 오늘 보여 드릴 소스는 클래스가 두개 입니다.

public class ClassTest {

    public static void main(String args[]) {

        System.out.println("안녕하세요");

     }

}
 

class ClassExam {

    private String memberVar;

   

    public ClassExam( ) { }

    public void method( ) { }

}


특이하죠? 클래스가 두개 이용됐습니다. 어떻게 클래스가 두개가 존재 할까요?
음..아마 가장 처음 자바 기본 소스편에서 그림 하나로 설명을 한 적이 있었을겁니다.
그 그림에서 보면 클래스들은 하나의 집단에 여러개 존재가 가능하죠.
쉽게 말하면 클래스들끼리 옹기종기 모여서 노는게 가능합니다.
하나의 소스에 여러개의 for문이나 if문이 많이 들어 갈수 있는 것처럼요~

그럼 메인 메소드가 존재하는 클래스와 메인 메소드가 존재하지 않는 클래스와의 관계를 알아봅시다.

두개의 클래스는 각각 독립적(?)이다 라고 말할수도 있습니다. 그러나 클래스를 두개 이상 사용하는데
왜 따로 따로 노느냐에 대한 의문이 생길수도 있지요~

사람들은 어떤 과제를 수행 할 때 혼자 보단 둘이 하는게 더 효율적일 때가 있지요~
그것 처럼 클래스들끼리도 서로 처리를 해서 주거니 받거니가 됩니다.
이 특징이 자바가 좋은 장점이기도 하지요 ~
이유는 여러 사람이 코딩을 해서 하나로 합치기가 쉽다는 것!

그것 처럼 여러 클래스를 이용해서 하나로 완성이 가능하기 때문에 클래스를 여러개 사용한답니다.

가장 기본이 되는 소스를 보여 드렸기 때문에 이해가 좀 안되실수도 있을겁니다.
그럼 두번째 클래스에 대해서 알아봅시다.

class ClassExam {

    private String memberVar;

   

    public ClassExam( ) { }

    public void method( ) { }

}

위에서 " private String memberVar; " 이녀석 부터 풀이를 해봅시다.

private 란 놈은 다른 클래스와 공유 안하겠다는 뜻입니다. 숨겨놓기죠.(나만 쓸거야 욕심쟁이 ~)
String memberVar 이것은 늘 보던거죠? 변수입니다.

그런데 그냥 변수가 아니라 맴버변수라고 하지요.
맴버변수라고 하니까 또 골머리가 아프겠죠? 쉽게 풀어봅시다.
맴버변수란 전역변수와도 같은 성격을 갖고 있는데 전역변수로 이해하는 쪽이 더 쉬울수도 있습니다.
이 변수는 이 클래스 내에서만 사용한다. 즉, ClassExam에서만 사용할 변수다. 라는 것입니다.
그렇기 때문에 다른 클래스에서는 이 변수를 절대적으로 사용이 불가능합니다.(사용이 가능한 경우가 있으면 알려주시고 ㅋㅋ)
그럼 다음 설명으로 넘어가겠습니다. 더 설명을 하다간 너무 길어지겠네요 ~

public ClassExam( ) { }
어디보자 ~ 클래스이름과 동일하게 뭔가 생겼네요? 음..그럼 클래스 일까? 아닙니다.
이녀석은 생성자 라고 불리우는 녀석입니다. 알아보는 방법은 클래스와 다르게 () 이런 괄호가 있죠?

그럼 이녀석이 하는 일은 무엇일까요? 음.. 여기서 설명하긴 좀 그렇겠네요.
이녀석은 때로는 사용하고 떄로는 사용 안하기도 합니다. 제가 아직 부족해서 메소드와 비슷하다(?)라고 설명을하겠습니다.

그리고 소괄화("()") 안에는 인자 라는 값을 넣습니다.
쉽게 말하면 이 괄호 안에 들어가는 것은 변수입니다. int a, String b, char c.. 뭐 이런거죠
여기에 값을 넣어서 사용을 하게 되면 잼있는 일이 생깁니다.
메인 클래스에서 다른 클래스를 불러오게 되면 가장 먼저 하는 일이 생성자 부터 들여다 보는 특징이 있습니다.
프로그램을 실행 하면 메인 메소드를 메모리에 가장 먼저 로드 하는 것처럼 말입니다.
자세한건 조금 후에 더 하도록 하고 일단 다음으로 넘어가도록 하죠.

public void method( ) { }
위에 보이는 것은 메소드 라는 것입니다. 메소드라..알듯 말듯 ~ 하죠?(가끔 저도 확실한 정의에 대해서 혼동을 갖기도 합니다)
생긴건 딱 메인 메소드와 비슷하게 생겼는데 뭔가 다른게 있으니까 그냥 메소드겠죠?
저녀석은 불러내야만 사용이 가능합니다. 불러낸다.. 어떤 의미일까요?
다른 곳에서, 즉 다른 클래스에서 야 너좀 일로와봐 하는 것처럼 불러다 씁니다.

실제로는 메소드가 일을 처리하도록 어떤 일을 하게끔 만들어 놓고 메인클래스에서
시키면 시키는데로 처리를 해서 결과를 가져다 줍니다.

그리고 메소드라는 녀석은 return 이라는 것을 사용하기도 하고 안하기도 합니다.
메소드가 좀 어려울수도 있는데 메소드는 위에 것처럼 선언하지 않고 조금 다르게 선언하기도 합니다.
리턴을 사용 하느냐 안하느냐에 따라서 좀 달라지니까요.

그럼 이쯤 설명하고 정리를 한번 해보도록 하죠.

두번째 클래스의 구조

1. 클래스를 선언한다.
2. 맴버변수를 선언한다.
3. 생성자를 선언한다.(때로는 안할수도 있습니다. 간단한것을 짤 때는..)
4. 메소드를 선언한다.

그리고 생성자와 메소드에는 인자 값을 넣는 소괄호가 존재한다.

여러 클래스를 이용하는 이유

1. 각자 주어진 일을 하는 클래스를 만들어 합치기가 용의하다.
2. 생성자나 메소드를 이용해서 처리하는 일을 각각 지정하면 여러가지로 편리하다.

이 밖에도 여러 장점이 있기는 하지만 이정도로 정리합시다.

그럼 이번에는 먼가 좀 특이하게 생긴놈에 대해서 알아봅시다.
소스 사이 사이에 들어갔던 public와 private 입니다.
이 녀석들도 재미난 특징을 가지고 있습니다. 리눅스와 비유를 하자면 권한 설정 같은거죠.

모두 사용을 하겠다, 나만 사용하겠다, 나랑 같은 또래들만 사용하겠다 라는 것입니다.
이전에 이것에 대해서 그냥 이런게 있다고만 설명을 한적이 있는데 이녀석은 이번에 좀 알고 가야할 필요가 있겠습니다.

public : 아무 클래스에서 사용해도 된다.
protected : 같은 클래스와 하위 클래스, 같은 패키지 내에서만 사용 가능.
private : 같은 클래스 내에서만 사용이 가능하다.

위에 간단한 설명이 좀 이해가 안될수도 있으니 설명을 하도록 하겠습니다.
아무 클래스에서 사용이 가능하다는 말은 말 그대로 어디서든 나 가져다 써도 된다는 뜻입니다.
같은 클래스라는 말은 클래스 선언 내에서 사용하겠다는 것이고, 하위 클래스는 내 밑으로 존재하는 클래스겠지요.
그리고 패키지 라는 의미는 디렉토리나 폴더 개념이라 하면 쉬울지도 모르겠네요.
아! 그리고 한가지 더 있습니다. 위에 옵션을 사용하지 않았을 경우입니다. protected와 비슷한 속성을 갖는데
다른점은 하위 클래스라는 것이 빠져 있습니다. 그럼 이정도로 설명을 하죠.

역시 이번에도 부족한게 많네요. 음 아무래도 좀 전에 설명한 것은 따로 준비를 해서 소개해야 할듯 합니다.
그리고 오늘은 길이 좀 많이 길어질듯 해서 이정도로 줄이고 클래스에 관한 소스를 해석하는 편을
다음에 다시 소개 하도록 하겠습니다. 그럼 다음에 또만나요 ~

캄사합니다.

이 글과 관련있는 글을 자동검색한 결과입니다 [?]

by 만성피로 | 2008/04/29 23:32 | 정리할 자료들 | 트랙백 | 덧글(3)

트랙백 주소 : http://maydaisy.egloos.com/tb/289179
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by 김교수 at 2008/05/01 00:44
오늘 수업도 설명이 잘 되었네요. 음..생각같아서는 학생들에게 만성피로군의 블로그를 방문해서 읽어보라고 광고를 하고 싶군요. 저작권자가 허락을 하려는지는...^^
Commented by 만성피로 at 2008/05/11 19:17
하하하 ^^; 그거야 당연히 모두가 읽어준다면 감사할 뿐이지요 ~
Commented by 호호 at 2009/05/13 01:34
많은 내용을 짧고 굻게 설명 해주었네요 ~ 잘 보고 갑니다^^

:         :

:

비공개 덧글

◀ 이전 페이지다음 페이지 ▶