목차
#1 클래스 선언 및 명명 규칙
#2 인스턴스 객체 생성 및 접근 방법
#3 객체 배열
* 개인적인 공부 내용을 기록하는 용도로 작성한 글 이며, 지속적으로 내용을 수정해 갈 예정입니다.
#1 클래스 선언 및 명명 규칙
class 키워드를 사용해 선언한다. 클래스 내부에 선언된 변수들은 필드 혹은 멤버변수 라고 부른다.
다음은 필드 (name, level, atk) 를 가지는 Monster 클래스를 선언한 예제이다.
class Monster {
String name;
int level;
int atk;
}
Naming Convention
1. 클래스명은 대문자로 시작한다.
2. Camel Case 표기법을 따른다.
#2 인스턴스 객체 생성 및 접근 방법
클래스는 단순히 객체[인스턴스]를 생성하는 설계도로, 객체를 직접 생성해 정의한 뒤 접근하여 사용해야 한다. new 키워드를 사용해 객체를 생성하며, Monster class 내부에 선언된 필드의 크기만큼 메모리 공간을 차지한다. 생성한 뒤에는 객체에 접근할 수 있는 참조값을 반환한다. 실제로 slime 변수를 직접 출력해 보면 참조값이 담겨 있는 것을 확인할 수 있다.
public class Main {
public static void main(String[] args) {
Monster slime = new Monster();
System.out.println("slime object 주소값 : " + slime);
}
}
slime object 주소값 : ex.Monster@30f39991
. [dot] 접근 연산자를 사용하면 생성한 객체에 접근 할 수 있다.
다음 코드는 Monster 클래스를 사용해 Slime 객체를 생성한 뒤, Slime 객체에 접근해 각 각의 필드 [name, level, atk] 를 초기화한 예제이다.
public class Main {
public static void main(String[] args) {
Monster slime = new Monster();
slime.name = "NormalSlime";
slime.level = 5;
slime.atk = 10;
System.out.println("slime object");
System.out.println("name : " + slime.name + ", level : " + slime.level + ", atk : " + slime.atk);
}
}
slime object
name : NormalSlime, level : 5, atk : 10
#3 객체 배열
객체 배열이란 말 그대로 생성한 객체에 접근할 수 있는 참조값을 보관하고 있는 배열이다. 여기서 중요한 점은 실제 객체가 저장되는 것이 아닌 객체에 접근할 수 있는 참조값이 복사되어 저장된다는 것이다.
주의할 점은 객체 배열은 참조형 [reference type] 을 저장하고 있는 배열이기에, 값을 초기화해 주지 않으면 기본 적으로 Null 값으로 초기화 되게 된다. 따라서 NullPointerException 에러가 발생할 수 있기에 사용에 유의해야 한다.
클래스명[] 객체배열명 = new 클래스명[길이];
다음은 normalSlime, epicSlime 객체에 접근할 수 있는 참조값을 담고 있는 slimes 객체 배열을 생성한 뒤 접근한 예제이다.
public class MonsterMain {
public static void main(String[] args) {
Monster[] slimes = new Monster[2];
Monster normalSlime = new Monster();
normalSlime.name = "NormalSlime";
normalSlime.level = 5;
normalSlime.atk = 10;
slimes[0] = normalSlime;
Monster epicSlime = new Monster();
epicSlime.name = "EpicSlime";
epicSlime.level = 8;
epicSlime.atk = 13;
slimes[1] = epicSlime;
for(int i = 0; i < slimes.length; i++) {
System.out.println("name : " + slimes[i].name + ", level : " + slimes[i].level + ", atk : " + slimes[i].atk);
}
}
}
name : NormalSlime, level : 5, atk : 10
name : EpicSlime, level : 8, atk : 13
'Back-end > Java Fundamental' 카테고리의 다른 글
[JAVA] Immutable Object 불변 객체 (0) | 2024.06.26 |
---|---|
[Java] Final & Static Final (0) | 2024.02.22 |
[Java] 메모리 구조 & 스태틱 변수, 메서드 완벽 정리 (0) | 2024.02.17 |
[Java] 생성자 [Constructor] 및 this() 사용방법 (0) | 2024.02.10 |
[Java] 배열 선언 및 리팩토링 방법 정리 (0) | 2024.02.08 |