[Java] 클래스 ②
[ 클래스의 구성 멤버 ]
자바에서 클래스는 멤버로 필드, 생성자, 메소드를 갖는다.
이 구성 멤버들은 생략되거나 복수 개가 작성될 수 있다.
1. 필드 ( Field
)
필드는 클래스에 포함된 변수를 의미한다.
2. 생성자 ( Constructor
)
생성자는 객체 생성 시 초기화를 담당한다.
new
연산자로 호출되는 특별한 중괄호{}
블록이다.- 필드를 초기화하거나, 메소드를 호출하여 객체를 사용할 준비를 한다.
- 생성자는 메소드와 비슷하게 생겼지만, 클래스 이름으로 되어있으며 리턴 타입이 없다.
3. 메소드 ( Method
)
메소드는 어떠한 특정 작업을 수행하기 위한 명령문의 집합이다.
- 메소드를 호출하게 되면 중괄호 블록에 있는 모든 코드들이 일괄적으로 실행된다.
- 메소드는 필드를 읽고 수정하는 역할도 하지만, 다른 객체를 생성해서 다양한 기능을 수행하기도 한다.
- 메소드는 객체 간의 데이터 전달의 수단으로 사용된다. 외부로부터 매개값을 받을 수도 있고, 실행 후 어떤 값을 리턴할 수도 있다.
[ 필드 ]
필드는 다음과 같이 객체의 고유 데이터, 상태 정보, 부품 객체를 저장한다.
1. 필드의 구분
- 클래스 변수(
static variable
): 클래스 영역에 위치한 변수 중static
키워드를 가지는 변수 - 인스턴스 변수(
instance variable
): 클래스 영역에 위치한 변수 중static
키워드를 가지지 않는 변수 - 지역 변수(
local variable
): 메소드나 생성자 초기화 블록 내에 위치한 변수
예제
class Car {
static int modelOutput; //클래스 변수
String modelName; //인스턴스 변수
void method() {
int something = 10; //지역 변수
}
}
- 클래스 변수와 인스턴스 변수는 초기화를 하지 않아도 변수의 타입에 맞게 자동으로 초기화된다.
- 지역 변수는 사용하기 전에 초기화하지 않으면, 컴파일러 오류가 발생한다.
📌 클래스 변수, 인스턴스 변수, 지역 변수 비교
- 클래스 변수는 인스턴스를 생성하지 않고도 바로 사용할 수 있기 때문에 공유 변수(
shared variable
)라고도 한다.- 이러한 클래스 변수는 해당 클래스의 모든 인스턴스가 공유해야 하는 값을 유지하기 위해 사용한다.
- 인스턴스 변수는 인스턴스마다 가져야 하는 고유한 값을 유지하기 위해 사용한다.
📌 필드 타입별 기본 초기값
2. 필드 사용
1) 클래스 내부의 생성자나 메소드에서 사용할 경우
단순히 필드 이름으로 읽고 변경하면 된다.
2) 클래스 외부에서 사용할 경우
우선적으로 클래스로부터 객체를 생성한 뒤 필드를 사용해야 한다.
→ 필드는 객체에 소속된 데이터이므로 객체가 존재하지 않으면 필드도 존재하지 않기 때문이다.
예제
//Car 클래스
public class Car {
//필드
int speed;
//생성자
Car() {
speed = 0;
}
//메소드
void method(...) {
speed = 10;
}
}
Car
클래스의speed
필드는 생성자와 메소드에서 변경이 가능하다.
//Person 클래스
void method() {
//Car 객체 생성
Car myCar = new Car();
//필드 사용
myCar.speed = 60;
}
- 외부
Person
클래스에서Car
클래스의speed
필드값을 사용하려면Car
객체를 우선 생성해야 한다!
[ 참고자료 ]
이것이 자바다 책
http://tcpschool.com/java/java_class_component
http://tcpschool.com/java/java_member_field
Author And Source
이 문제에 관하여([Java] 클래스 ②), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@mmy789/Java-클래스-vnvobjjp저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)