지난 포스팅에서 클래스를 생성하는 방법에 대해서 알아보았다. 클래스를 선언하고 컴파일을 완료했다면 이는 공장에서 설계도가 준비되어 생산준비에 들어간 것과 같다고 할 수 있다. 이제 이 클래스를 사용하기만 하면 되는데 이때 new연산자를 통해 클래스를 인스턴스화(클래스를 통해 객체를 생성하는 것을 '인스턴스화'라고 한다) 하게 된다.

Person me=new Person();

 만약 Person이라는 클래스가 있다면 위와 같이 생성할 수 있다. 이때 사용한 것이 new 연산자이고 뒤의 Person(); 부분이 Person클래스를 ()를 통해 생성자를 호출한다는 뜻이라고 할 수 있다.

 

 new 연산자를 통해서 객체를 생성하게 되면 객체는 메모리 힙(heap) 영역에 생성되게 된다. new 연산자는 이 영역에 객체를 생성한 후에 객체의 주소를 리턴한다.

 

 클래스는 크게 2가지 용도로 나눌 수 있다. 하나는 라이브러리(API : Application Program Interface)용도이고 다른 하나는 실행용이다. 라이브러리는 말 그대로 도서관처럼 필요한 것을 가져다가 실행용 클래스에서 사용하는 목적으로 생성되는 클래스를 말한다. 이때 실행용 클래스는 단 하나밖에 존재하지 않아서 클래스가 무수히 많더라도 실행클래스는 1개라고 할 수 있다. 우리가 프로그램을 실행할 때 main함수가 들어있는 클래스가 실행용 클래스이다.

'프로그래밍 > JAVA' 카테고리의 다른 글

생성자  (0) 2021.04.30
클래스의 구성 요소  (0) 2021.04.29
클래스 선언  (0) 2021.04.29
Class - Field  (0) 2021.03.16
객체 지향 프로그래밍  (0) 2021.03.16

 지난 포스팅에서 클래스란 설계도면과 같다고 얘기했다. 그렇다면 이제 이 클래스를 어떻게 만들고 써먹는지에 대해 알아보도록 하겠다. 정말 간단하게 생성할 수 있지만 몇가지 규칙이 있다.

 

 - 하나 이상의 문자로 이루어져야 함

 - 첫 글자는 숫자 불가능

 - '$','_' 외의 특수 문자는 사용 불가능

 - 자바에서 지정한 키워드는 사용 불가능 (예: int, for 등등)

 

 위 규칙만 지킨다면 생성에 문제가 될 것은 없다. 하지만 보통 클래스 이름을 지을 때 첫글자는 대문자로 작성하는 것이 관례이다. 이름을 지었다면 클래스 파일을 생성해야 한다. 이때 소스 파일의 이름은 클래스 이름과 반드시 동일해야 한다. 만약 한 자라도 틀린다면 오류가 발생하게 된다. 소스 파일의 이름은 "클래스이름.java"와 같이 생성한다. 소스 파일을 생성했다면 열고 다음과 같이 선언을 해주어야 한다.

 

public class 클래스이름 {

}

 위 예시에서 앞에 public 접근 제한자를 붙여 주었는데 이때 다른 제한자를 사용하게 되면 오류가 발생하게 된다.

보통은 하나의 소스 파일에 하나의 클래스를 선언하지만 2개 이상의 클래스를 선언해도 무관하다. 하지만 여기서 접근제한자 public 을 2개의 클래스 모두에 붙여주게 되면 또 오류가 발생하게 된다. public은 소스 파일의 이름과 같은 클래스에만 사용할 수 있다.

 

 위처럼 클래스 파일을 작성한 후 컴파일을 하게 되면 .class 파일이 생성이 되는데 이는 소스 파일의 개수와 상관없이 내부에 선언된 클래스의 개수만큼 생성이 된다.

'프로그래밍 > JAVA' 카테고리의 다른 글

클래스의 구성 요소  (0) 2021.04.29
객체 생성 & 클래스 변수  (0) 2021.04.29
Class - Field  (0) 2021.03.16
객체 지향 프로그래밍  (0) 2021.03.16
자바 배열  (0) 2019.04.25

 필드 선언

 이번에는 클래스의 구성요소 중 필드에 대해서 알아보도록 하겠습니다. 필드란 쉽게 말해서 객체의 속성을 정의하는 공간이라고 할 수 있습니다. 예를 들어 휴대폰을 객체로 가정한다면 고유한 값을 가지는 제조사, 크기, 모델이름 등등이 고유 데이터에 해당하고 배터리 상태, 통신사 등등은 상태 데이터에 해당한다고 할 수 있습니다. 그리고 휴대폰에 블루투스로 이어폰, 워치 등등이 추가된다면 이는 휴대폰과 다른 객체이므로 다른 클래스가 선언 되어야 합니다. 위의 속성들을 클래스에 필드로 선언한다면 아래와 같이 될 수 있습니다.

public class Phone {
	String maker;
    int display_size;
    String model_number;
    
    int battery;
    String carrier;
    
    Earphone earphone;
    Watch watch;
}

 필드를 선언하는 위치는 어디가 되든 상관없습니다. 하지만 생성자와 메소드 중괄호 내부의 블록에는 선언될 수 없습니다. 만약 이들 중 한곳에 선언했다면 그것은 필드가 아닌 로컬 변수가 돼버립니다. 필드 선언 방법은 변수의 선언 방법과 같다고 볼 수 있습니다. 만약 초기값이 주어지지 않으면 객체 생성 시에 자동으로 초기화가 진행됩니다.

 

 필드 사용

 필드를 사용한다는 것은 필드값을 읽고, 변경하는 행위를 말합니다. 클래스 내부에서 생성자나 메소드가 필드를 사용할 경우 변수를 사용하듯이 사용하면 되지만 클래스 외부에서 사용할 경우에는 우선 해당 클래스로부터 객체를 생성한 뒤 필드에 접근해야 합니다. 그 이유는 해당 객체가 존재하지 않으면 필드 또한 존재하지 않기 때문입니다.

 

 클래스 외부에서 해당 객체의 필드에 접근하려고 할 때에는 도트(.)를 이용해서 접근할 수 있습니다. 아래의 예시에서 살펴보도록 하겠습니다.

 

-Person 클래스

void method(){
	Phone myPhone=new Phone();
    myPhone.battery=75;
}

-Phone 클래스

int battery;

Phone(){
	battery=0;
}

void method(){
	battery=50;
}

 위의 예시에서는 클래스 내부에서는 변수처럼 사용할 수 있지만 클래스의 외부에서는 도트(.) 연산자를 통해 접근하는 것을 확인할 수 있습니다.

'프로그래밍 > JAVA' 카테고리의 다른 글

객체 생성 & 클래스 변수  (0) 2021.04.29
클래스 선언  (0) 2021.04.29
객체 지향 프로그래밍  (0) 2021.03.16
자바 배열  (0) 2019.04.25
자바 메서드 - 문제  (0) 2019.04.22

+ Recent posts