Java

[Java-7] 클래스

zamezzz 2017. 1. 30. 01:12

 [Java-7] 클래스


안녕하세요.


오늘은 JAVA의 클래스에 대해서 알아보겠습니다.


지난 시간에 정리했던 객체와 클래스의 심화버전이라고 생각하시면 되겠습니다.


먼저 지난 포스팅에서 클래스의 구성 요소에 대해 간략히 정리했는데요. 오늘은 각 구성 요소의


세부적인 내용을 정리할게요.




■ 필드

생성자

■ 메소드

■ 접근 제한자




■ 필드


지난 시간에 정의한 필드란 아래와 같았습니다.


필드 - 객체의 데이터가 저장되는 곳. 데이터 선언 및 초기화 하는 공간이에요

int fieldName;


이 필드를 실제로 어떻게 사용하는지에 대해서 보겠습니다.


선언 및 초기화 하는 방법은 변수를 선언 및 초기화 하는 방법과 동일합니다.


이후 필드를 사용한다는 것은 필드 값을 읽고, 변경하는 작업을 말합니다.


해당 클래스의 필드 값을 사용하기 위해서는 객체를 생성하고 도트(.)연산자를 통해 사용합니다.


예를 들어 다음과 같습니다.


Car car1 = new Car();        // 객체 생성

car1.cost = 1500;            // cost 필드 값 사용


전체 코드는 필드, 생성자, 메소드에 대해서 한 번에 진행하겠습니다.

■ 생성자


다음으로 생성자의 정의는 아래와 같이 정의했었죠


생성자 - 객체 생성 시 초기화 역할 담당. 앞에서 살펴본 new 연산자입니다.

Car car1 = new Car();


지금까지 보았던 생성자는 '기본 생성자'입니다.


모든 클래스는 생성자가 반드시 하나 이상이 존재합니다. 지금까지 클래스에서 따로 생성자에


대한 선언을 하지 않았기에, 기본 생성자를 자동으로 가지고 있었습니다.


그럼 생성자를 만드는 방법을 정리하겠습니다.


클래스 (매개변수, ....) {

   //객체의 초기화 코드

}


위와 같이 클래스 내에서 생성자를 선언합니다. 이후 생성자를 호출하여 객체를 생성하는데요


매개변수를 추가하여 선언하였다면, 기존과 같이 기본 생성자는 호출할 수 없습니다.


호출을 위해서는 기본생성자 또한 따로 선언을 해주어야합니다.


이 또한 자세한 예제는 뒤에서 함께 할게요.


■ 메소드


마지막으로 메소드의 정의는 아래와 같이 정의했었죠.


메소드 - 객체의 동작에 해당하는 실행 블록. 보통의 메소드라고 생각하시면 되요.

void methodName() { ...}


메소드의 형태는 다음과 같습니다.


리턴타입 메소드이름 (매개변수, ...) {

    // 실행 코드 작성

}


리턴 값이 있는 메소드의 경우는 리턴 값을 저장할 변수가 있어야 하므로, 메소드 호출 시


리턴 값을 저장할 변수 또한 함께 선언한 후 호출해야 합니다.


이제 실제 필드, 생성자, 메소드가 모두 포함된 예제 코드를 한번 보겠습니다.


주제는 계속해서 'car' 입니다 ㅎㅎ


먼저 Car.java 클래스를 다음과 같이 작성하겠습니다.


필드, 생성자, 메소드를 구현했습니다.


speedUp() 메소드는 현재 speed에서 +10을 해줍니다.


이제 이 클래스를 사용하기 위해 Main에서 객체를 생성한 후 호출하겠습니다.



예제를 보니 이해가 좀 더 쉽죠?


위에서 정리한 각 필드, 생성자, 메소드는 위와 같이 사용할 수 있습니다.


■ 접근 제한자


오늘의 마지막 챕터로 '접근 제한자'에 대해서 정리해보겠습니다.


main이 아닌 대부분의 클래스는 외부 클래스에서 참조할 목적으로 설계된 클래스입니다.


그렇기에 특정 클래스에 대해 접근을 제한하는 기능이 필요합니다.


자바에서 제공하는 이러한 기능은 '접근 제한자'라고 부르고 있습니다.


접근 제한자에는 4가지 종류가 있습니다.


- public 

모든 외부 클래스에서 자유롭게 사용

- protected

같은 패키지 및 자식 클래스에서 사용

- default

같은 패키지내에서만 사용

- private

현재 클래스내에서만 사용

사용법은 다음과 같습니다.


public int field1;

private int field2;

String field3;


public A()    {

}


public void method1() {}


아무것도 적용하지 않는 경우가 default입니다.


또한 클래스에 적용할 수 있는 접근 제한자는 public / default 2가지 종류입니다.


이 점만 주의해서 사용하시면 될 것 같아요.



이상으로 클래스에 대한 포스팅을 마치겠습니다.


다들 예제코드 작성하셔서 따라해보시면 이해가 쉬우리라 믿습니다.


감사합니다.

반응형

'Java' 카테고리의 다른 글

[Java-9] 추상클래스, 추상메소드, 인터페이스  (0) 2017.02.12
[Java-8] 상속  (0) 2017.02.05
[Java-6] 객체와 클래스  (1) 2017.01.28
[Java-5] 참조 타입 (문자열, 배열, 열거)  (0) 2017.01.24
[Java-4] 조건문과 반복문  (0) 2017.01.23