[Java] 7. 클래스

2023. 9. 18. 23:33Java언어 공부

멤버 변수

객체의 상태를 나타내기 위해 사용한다.

특정 객체를 n개 생성하면 객체의 멤버 변수도 각 n개씩 생성하여 객체마다 유지한다.

 

멤버 변수는 보통 private 접근 제어를 사용 =>  외부에서 함부로 변경 불가

=> public 메소드를 통하여 수정이 가능함

 

여러 개의 데이터가 하나의 정부를 구성할 경우 => 클래스를 정의하는 것이 바람직함.

ex) 사람 정보 : 국가, 도시, 도로명 등등

 

만약 데이터가 객체의 수명 동안 바뀌지 않으면 => 상수로 만듬

 

메소드

 

메소드는 주어진 인자와 객체의 멤버 변수를 함께 사용한다.

 

- 메소드의 종류

생성자 : 

객체를 생성할 때 사용하는 메소드

클래스 이름과 생성자의 이름이 같다. 그리고 반환 타입이 없다.

 

소멸자 : 

원래는 동적할당을 할 경우, 메모리를 반납하기 위하여 존재하는 함수이나,

자바에서는 JVM이 알아서 반납해주기 때문에, 사용하지 않는다.

 

접근자 :

객체 상태를 수정하지 않는 메소드 (이를 Getter라고 한다)

보통 객체의 상태를 변경하지 않고 열람하는 용도로 쓴다.

항상 반환 타입이 있다.

 

-주의할 점 : 참조 타입을 반환하면 그것을 이요해서 객체의 상태를 수정 할 수 있다 =>캡슐화 위배

 

이를 해결할 수 있는 방법?

 

복제해서 반환 => 효율성이 떨어짐

그래서 불변 객체로 만들어서 사용해야 함

불변 객체는 나중에 배우도록 한다.

 

수정자 :

객체 상태를 수정할 수 있는 메소드 (이를 Setter이라고도 한다)

일반적으로 void를 사용

 

불변 클래스

 

수정자 메소드가 없는 클래스이다.

 

불변 클래스의 멤버 변수는 final 수식어를 이용하여 정의한다.

자바 16부터는 record를 사용하여 불변 클래스를 정의한다.

 

메소드의 숨겨진 매개 변수

 

public void deposit(int amount){
	balance = balance + amount;
}

 

이 함수는 클래스 안에 들어있는 메소드를 예시로 들어간 것이다.

만약 클래스 이름이 bobAccount이면 여기의 balance는 bobAccount 객체의 balance이다.

 

사실 여기에는 매개변수가 하나 더있다.

매개 변수가 this인데, this는 객체 자신을 뜻한다.

 

this는 언제 사용할까?

1. 멤버 변수와 같은 이름의 매개 변수를 사용할 때 이를 구분하기 위해 사용한다.

2.  this키워드를 통하여 하나의 생성자에서 다른 생성자를 호출할 때도 사용한다.

(이때, this를 이용한 생성자의 호출은 반드시 생성자의 첫 문장이어야 한다)

 

JavaDoc

 

/**

*

* @param

*/

입력하고 Eclipse에서 Generate Javadoc을 누르면, 창이 하나 뜨게 된다.

next next를 누르고 -html5를 누르면 doc파일이 생겨난다.

 

index.html 파일을 누르면 본인이 만든 Class에 대한 설명이 문서 형식으로 자세히 나와있다.