티스토리 뷰

저를 포함한 초보자 분들에게 도움이 됐으면 좋겠습니다.
초보자 분들은 수박 겉핥기 식으로 알고 넘어가지 마시고, 조금이라도 왜 이렇게 프로그램이 돌아가는지알고 가시는 시간이 됐으면 좋겠습니다.

오늘은 java에 없어서는 안될 Class를 이야기해 보겠습니다.
일단 Class가 왜 자바에서 중요할까요?
Java는 OOP(객체지향 프로그래밍)을 지향합니다. C는 절차지향 프로그래밍이죠.
여기서 '객체'라는 것이 나오는데 이 '객체'를 중심으로 프로그래밍을 하는거죠.
그럼 객체는  뭘까요? Class를 이용하여 만들어진 것이라고 보시면 됩니다.
그럼 Class는? 객체를 생성하기 위한 틀 이라고 보시면 됩니다.
말이 어렵습니다.. 간단하게 가보죠.

게임을 시작하면 캐릭터를 만드는 창이 나옵니다.
캐릭터를 만드는 화면이 클래스 입니다. 이 화면을 통하여 캐릭터(객체)를 생성할 수 있죠.
우리는 이 클래스(캐릭터 생성화면)를 이용하여 캐릭터(객체)의 머리모양,눈모양,..... 등등 많은 것을 바꿀 수 있죠. 그리고 캐릭터를 생성을 하게됩니다. 이 생성된 캐릭터가 하나의 '객체'가 되는 것이죠.
다른 사람이 캐릭터를 만들게 된다면 어떨까요.
같은 캐릭터 생성화면(Class)을 사용하기 때문에 캐릭터(객체)는 전체적인 외형은 다를지라도, 머리모양,눈모양...등등 같은 속성을 가지게 되죠. 마찬가지로 '객체'가 생성되는 것이죠.

그럼 자바에선 어떻게 Class를 정의하고 객체를 만들까요? 이미 우리는 자바를 시작할 때 Class를 보았습니다.


(1)public class first{
	public static void main(String[] args) {
		System.out.println("Hello World!");
		
	}
}

처음 자바를 실행 해보면 'Hello World!'를 출력하는 코드가 나올 것입니다. 
이것도 하나의 class로 구성돼있습니다. (1)코드의 첫줄 public class first{ ~~ }에서 보듯 우리는 처음부터  Class를 사용하고 있는 것이죠.
Class는 간단하게 정의 할 수 있습니다.


 (2)public class second {  }

이런식으로 말이죠. 물론 second Class파일을 새로 만들어 주어야 합니다. 즉, first,second 2개의 자바 파일이 있는 것이죠. first는 class로 구성이 되어있지만 실질적으론 second의 객체를 만드는 역할을 할 것이고 second는 객체를 찍어내는 class(틀)역할을 할 것 입니다.

클래스는 만들었으니 이제 '객체'를 만들어 봅시다.
first에 second객체를 만들어 보겠습니다.


 
(3)public class first {	
        public static void main(String[] args) {
		    second create = new second();
	     }
}이와같이 < Class명 변수명 = new Class명(); > 이런식으로 객체를 생성 할 수 있습니다. 
객체를 생성할 때는 new키워드를 이용하여 만들어주고, new를 이용하게 되면 완전히 새로운 객체를 만들게 됩니다.
하지만, 이런 객체를 만들어도 (2)코드 second Class에서는 어떤 내용도 들어있지 않기에 깡통을 만드는 것과 같습니다. 그럼 일단 Class(틀)에 속성들을 넣어봅시다.



 (4)public class second {
	 String name = "Sims";
	 String head_Color = "black";
	
	 public void set_name(String change_name) {
	 	name = change_name;
	 }
	
	 public void set_headColor(String change_Color) {
	 	head_Color = change_Color;
	 }
	
	 public void walk() {
	 	System.out.println("걷는중");
	 }
	
	 public void attack() {
	 	System.out.println("공격");
	 }
}

(4)와같이 second에 머리색,아이디를 지정하는 변수를 만들고 이름,머리색을 바꿀 수 있는 메소드 또한 정의해 주면, 객체의 머리색을 바꿀수도 있고 아이디또한 바꿀 수 있습니다. 
그럼 어디서 머리색을 바꿀까요? 우리가 생성해준 first파일의 create객체를 이용하여 바꿀 수 있습니다.


(5)public class first {	
	public static void main(String[] args) {
		second create = new second(); (객체생성 = 캐릭터생성)
		create.set_headColor("red");
		System.out.println(create.head_Color); //red
		create.walk(); //걷는중
	}
}
create는 second틀을 이용하여 만들었기에 second안에 있는 변수(name,head_Color),메소드(walk,run,set_name,set_headColor)를 따로 생성하여 가지고 있는 것입니다. 그럼 create안에 있는 것들에 접근해보죠.
create. 를 이용하여 접근 할 수 있습니다. < . >이 키워드가 바로 내부에 있는 속성들을 접근 하는 키워드 입니다. 예를 들어 create.set_headColor(~~);를 한다면 create안에 있는 set_headColor 메소드에 접근하여 일을 수행하는 것이죠.

우리가 출력을 하기위해 사용했던 System.out.println()도 System이라는 객체안에 있는 out에 접근하여 out안에 있는 println메소드를 접근하여 출력을 해주었던 것입니다!
(여기서 System이라는 객체를 만들지 않았는데 어떻게 접근하냐! 라는 질문이 나올 수 있습니다.
나중에 static 키워드를 배우게 되는데 이놈은 객체를 만들지 않고 어디서든 접근이 가능합니다. System안에 있는 out이 static변수로 선언되어있기에 객체를 생성을 하지 않아도 접근이 가능합니다.)

지금까지 Class에 대해서 설명을 해보았습니다. 자바는 Class와 객체의 개념만 어느정도 습득한다면 쉬운 언어이므로 Class,객체에 대해서 좀 더 자세히 알아 보시는 것도 좋을 것 같습니다. 코드적으론 뜯어볼게 없었네요. 

다음은 상속에 대해서 올리도록 하겠습니다.


공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함