본문 바로가기
프로그래밍언어/Java

[Java] : Class와 인스턴스 생성 및 호출

by 오주현 2022. 1. 14.
반응형
Class와 인스턴스 생성 및 호출

Class란?

클래스는 설계도, 인스턴스(객체)는 설계도를 통해 만든 물건과 같다고 볼 수 있다.

Class 형태

public class Name {

}

publci 접근 제한자를 활용한 Name 클래스이다.

클래스는 이런 형태를 가지고 있다.

실습

class NoteSetting {

    //노트 필드
    String color; //노트 색상
    int page; // 노트 장 수

    // 노트 장 수 증가
    void upPage(int value) {
        page += value;
    }

    // 노트 장 수 감소
    void downPage(int value) {
        page -= value;
    }
}

노트 클래스를 완성했다.

노트의 설계도를 만든 것과 같다.

이제 노트의 설계도를 통해 노트를 만들면 그것을 인스턴스(객체)라고 한다.

public class Note{
    public static void main(String[]args){

				// myNote1 인스턴스 생성
        NoteSetting myNote1 = new NoteSetting();
				//인스턴스 필드에 값 대입
        myNote1.color = "Blue";
        myNote1.page = 0;
				
				// myNote2 인스턴스 생성
        NoteSetting myNote2 = new NoteSetting();
				//인스턴스 필드에 값 대입
        myNote2.color = "Red";
        myNote2.page = 10;

				//메소드 호출하기
        myNote1.upPage(10);
        System.out.println("1번 노트의 색상은 " + myNote1.color + "색입니다.");
        System.out.println("1번 노트의 페이지는" + myNote1.page + "페이지입니다.");

				//메소드 호출하기
        myNote2.downPage(5);
        System.out.println("2번 노트의 색상은" + myNote2.color + "색입니다.");
        System.out.println("2번 노트의 페이지는" + myNote2.page + "페이지입니다.");
    }
}

myNote1 인스턴스를 생성하고 Blue색상과 0페이지로 지정을 해줬다.

myNote2 인스턴스를 생성하고 Red색상과 10페이지로 지정을 해줬다.

 

myNote1을 호출해 다음 장으로 10페이지를 넘겨줬다.

myNote2를 호출해 전 장으로 5페이지를 넘겨줬다.

출력을 해보면 1번 노트는 Blue색에 10페이지로 넘어갔고, 2번 노트는 Red 색에 5페이지로 넘어간 것을 확인할 수 있다.

전체 코드는 아래와 같다.

package Study01;

class NoteSetting {

    //노트 필드

    String color; //노트 색상
    int page; // 노트 장 수

    // 노트 장 수 증가
    void upPage(int value) {
        page += value;
    }

    // 노트 장 수 감소
    void downPage(int value) {
        page -= value;
    }
}

public class Note{
    public static void main(String[]args){

        NoteSetting myNote1 = new NoteSetting();
        myNote1.color = "Blue";
        myNote1.page = 0;

        NoteSetting myNote2 = new NoteSetting();
        myNote2.color = "Red";
        myNote2.page = 10;

        myNote1.upPage(10);
        System.out.println("1번 노트의 색상은 " + myNote1.color + "색입니다.");
        System.out.println("1번 노트의 페이지는" + myNote1.page + "페이지입니다.");

        myNote2.downPage(5);
        System.out.println("2번 노트의 색상은 " + myNote2.color + "색입니다.");
        System.out.println("2번 노트의 페이지는" + myNote2.page + "페이지입니다.");
    }
}

.java 파일과 .class파일

Note 클래스를 보면 1개의 .java 소스 파일이다.

위에 전체 소스 코드를 확인해 보면 Note 클래스 안에는 Note 클래스와 NoteTest 클래스 이렇게 2개의 클래스가 있다.

Note.java가 실행이 되면서 각 클래스 별로 바이트코드 파일이 생성이 된다.

확인을 해보면 Note.class와 NoteTest.class가 생성이 된 것을 알 수 있다.

무조건 클래스가 개수만큼 .class로 생성이 되는 것은 아니다. 예를 들면 클래스 안에 클래스를 작성하는 내부 클래스는 외부 클래스 1개만 .class로 생성이 된다.

반응형

댓글