728x90
클래스 (Class)
- 객체를 생성하기 위한 설계도이며 필드와 메서드로 구성되어 있다.
- 필드(Field): 객체의 상태를 나타내는 변수들을 말한다.
- 메서드(Method): 특정 작업을 수행하기 위한 명령문 집합을 말한다.
객체 (Object)
- 클래스를 기반으로 만들어진 대상이며, 클래스에서 정의한 속성과 동작을 가진다.
- 객체는 클래스의 인스턴스라고도 불리며, 선언한 객체는 아직 메모리를 차지하지 않는다.
인스턴스 (Instance)
- 클래스를 통해 생성된 구체적인 실체이다.
- 인스턴스는 메모리에 할당되어 실제로 사용되는 객체를 의미한다.
- 인스턴스는 특정 클래스의 객체를 나타내는 용어이다. 즉, 클래스로부터 생성된 각각의 객체를 인스턴스라고 부른다.
따라서, 인스턴스는 개념적으로 객체와 같거나, 객체의 구체적인 예시로 볼 수 있다.
※ 클래스와 인스턴스의 관계
클래스를 설계도라고 한다면, 인스턴스는 그 설계도를 바탕으로 만들어진 실제 제품에 해당한다.
클래스는 여러 개의 인스턴스를 생성할 수 있는 반면, 각 인스턴스는 클래스의 정의에 따라 독립적으로 메모리를 차지하며 상태를 유지한다.
예시: Car라는 클래스가 있다면, Car 클래스의 인스턴스는 myCar1, myCar2와 같이 각기 다른 자동차 객체를 생성한 것이다. 각 인스턴스는 그 자체의 속성과 동작을 가진다.
변수 (Variable)
- 데이터를 저장하기 위한 메모리 공간으로, 값을 담는 컨테이너이다.
- 객체의 속성(필드)도 변수의 일종이다.
- 변수는 특정 데이터 타입을 가지며, 값을 변경할 수 있다.
코드
// Car class
public class Car {
// 필드 (변수): 자동차의 속성을 나타내는 변수들
private String color; // 자동차의 색상
private String model; // 자동차의 모델
// 생성자: 객체를 생성할 때 호출되는 메서드
public Car(String color, String model) {
this.color = color; // 매개변수로 받은 color 값을 필드에 할당
this.model = model; // 매개변수로 받은 model 값을 필드에 할당
}
// 메서드: 객체의 행동을 정의하는 함수
public void displayInfo() {
// 자동차 정보 출력
System.out.println("모델: " + model + ", 색상: " + color);
}
// 필드에 접근하기 위한 getter 메서드
public String getColor() {
return color; // color 필드의 값을 반환
}
public String getModel() {
return model; // model 필드의 값을 반환
}
}
// 예시: Main 클래스에서 객체를 생성하고 사용하는 예제
public class Main {
public static void main(String[] args) {
// 객체 생성 3가지 방법
/*
* 1. 객체 선언: 클래스명 + 객체변수명
* 객체 변수가 선언되었지만 아직 메모리는 할당되지 않음(인스턴스가 아님)
*/
Car myCar1;
/*
* 2. 객체 생성: 객체변수명 = new 클래스명;
* 객체가 생성되고 메모리가 할당됨(인스턴스가 생성됨)
*/
myCar1 = new Car("Red", "Toyota");
/*
* 3. 동시 선언 및 생성: 클래스명 + 객체변수명 = new 클래스명;
* 객체를 선언과 동시에 생성하므로 메모리가 할당됨(인스턴스가 생성됨)
*/
Car myCar2 = new Car("Blue", "Honda");
Car myCar3 = new Car("Black", "BMW");
// 각 자동차 정보 출력
myCar1.displayInfo(); // 출력: 모델: Toyota, 색상: Red
myCar2.displayInfo(); // 출력: 모델: Honda, 색상: Blue
myCar3.displayInfo(); // 출력: 모델: BMW, 색상: Black
}
}
구분 | 비유 | 요악 |
클래스 (Class) | 붕어빵 틀 (설계도) | 객체를 정의하는 틀, 설계도 |
객체 (Object) | 붕어빵이 될 대상 (붕어빵 틀로 만든 것) | 클래스를 기반으로 한 구체적인 대상 |
인스턴스 (Instance) | 실제로 만든 붕어빵 | 설계도를 바탕으로 만들어진 메모리에 할당된 객체, 실제로 사용되는 상태 |
변수 (Variable) | 붕어빵의 크기나 맛을 나타내는 성분 | 데이터를 저장하는 공간, 객체의 속성도 포함 |
728x90
'JAVA > 기초' 카테고리의 다른 글
Java에서 static을 사용하는 이유 (0) | 2024.10.12 |
---|---|
[JAVA] HashMap Key 중복 허용 (0) | 2022.11.16 |
[JAVA] BCryptPasswordEncoder 단방향 비밀번호 암호화 (0) | 2022.08.24 |
[JAVA] file 관련 메서드 & 함수 (0) | 2022.08.24 |
[JAVA] File의 path를 가져오는 API (0) | 2022.08.24 |