* 클래스의 구성을 읽기 전에 먼저 클래스와 객체를 읽어주세요!
https://codewos.tistory.com/36
클래스는 필드, 생성자, 메소드로 구성되어 있다. 이 세 가지는 클래스 내에서 생략되거나 여러 개를 만들어 낼 수도 있다. 지난번 '클래스와 객체' 글처럼 쿠키런 킹덤의 쿠키들로 이들에 대해서 살펴보자.
1. 필드 : 클래스에 포함되어 있는 변수로 객체의 데이터가 저장되는 곳
쿠키공장에서 쿠키를 만든다고 생각해보자. 각각 다른 쿠키를 만드려면 각 쿠키의 속성이 달라야 한다. 이러한 속성값은 클래스의 필드에 선언된다. 아래와 같이 쿠키 공장을 간단하게 만들어 보았다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
package cookieFactory;
public class Cookie {
String cookieName; // 이름
String cookieClass; // 등급
String cookieType; // 타입
String cookieSkill; // 스킬
int level; // 시작 레벨
public Cookie() {}
public Cookie(String cookieName, String cookieClass,
String cookieType, String cookieSkill, int level) { this.cookieName = cookieName;
this.cookieClass = cookieClass;
this.cookieType = cookieType;
this.cookieSkill = cookieSkill;
this.level = level;
}
}
|
cs |
위의 코드를 살펴보자. 내가 설정한 값에 따르면 쿠키를 만들 때는 이름, 등급, 타입, 스킬, 시작 레벨을 설정해줘야 한다. 또한 다른 클래스에서도 사용할 수 있도록 만들어 주었는데 Alt+Shift+S를 누르면 아래 사진처럼 메뉴가 뜨고 이 중에서 'Generate Constructor using Fields'를 클릭하면 쉽게 만들 수 있다.
그러면 필드와 생성자를 사용하여 MakeCookie 클래스에서 공주맛 쿠키와 바다요정 쿠키를 각각 만들어 보자.
2. 생성자 : 객체 생성 시 new 연산자로 호출되며 인스턴스 변수를 원하는 값으로 초기화를 해준다. 메소드와의 차이는 클래스 이름으로 되어있다는 것과 리턴 타입이 없다는 것이다.
1
2
3
4
5
6
7
8
9
10
11
|
package cookieFactory;
public class MakeCookie {
// 클래스명 쿠키이름 //생성자 //필드값
Cookie princessCookie = new Cookie("공주맛쿠키", "RARE","돌격형","로얄케인 스윙",1);
Cookie seaFairyCookie = new Cookie("바다요정쿠키", "LEGENDARY","폭발형","솟구치는 마음",1);
}
|
cs |
생성자를 사용하여 두 개의 쿠키를 만들어보았다. 두 쿠키는 쿠키이름과 필드값이 각각 달라 구분이 가능하다. 이렇게 넣은 필드값은 읽고 변경하는 작업이 가능한데 이를 필드 사용이라고 한다. 게임에서 전투 시 스킬을 사용할 때나 레벨이 올라서 값을 변경해야할 때 필드를 사용할 수 있다.
3. 메소드 : 객체의 동작에 해당하는 중괄호({ }) 블록으로 자신만의 이름을 가지고 있다. 필드를 읽거나 수정하거나 객체를 생성하여 다양한 기능을 수행한다. 외부로부터 매개값을 받거나 실행 후 값을 리턴하여 객체 간의 데이터를 전달하는 수단으로 사용된다.
메소드에 대해서는 다음 글에서 더 자세히 살펴보자!
참고 : 도서 <이것이 자바다>
'JAVA' 카테고리의 다른 글
java.util.Base64 사용 시 jdk 1.7 버전으로 인한 오류 (1) | 2023.01.04 |
---|---|
JAVA : 속이 비어있는 삼각형 만들기 (0) | 2022.08.22 |
JAVA - 클래스와 객체 (0) | 2022.06.20 |
JAVA - String의 선언과 활용 (0) | 2022.06.15 |
JAVA - 기초 프로젝트 : 간단한 콘솔 게임 "이승탈출 넘버원" (0) | 2022.06.08 |
댓글