[Java] 클래스 객체 선언 및 객체 배열 사용법 정리

    반응형

    목차

    #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
    반응형

    댓글

    Designed by JB FACTORY