클래스와 객체
클래스는 객체를 생성하기 위한 틀이고, 객체는 클래스를 기반으로 생성된 인스턴스이다. 즉 클래스는 객체의 설계도 역할을 하며 이 설계도를 기반으로 만들어진 실체가 객체인 것이다.
클래스 Class
// 클래스 정의
public class Car {
// 속성 (필드)
String color;
int speed;
// 동작 (메서드)
void drive() {
System.out.println("The car is driving.");
}
}
클래스는 객체를 정의하기 위한 설계도이다. 클래스는 속성(필드)과 동작(메서드)로 구성되어 있고, 이를 통해 객체의 상태와 행위를 정의한다.
객체 Object
객체는 new키워드를 통해 클래스를 기반으로 생성된 구체적인 실체이다. 메모리에 올라간 상태로, 클래스에 정의한 속성과 동작을 가지며 각각 독립적으로 존재한다. 같은 클래스 설계도를 사용하여 여러 객체를 사용할 수 있으며, 각 객체는 동일한 구조를 가지나 개별적인 데이터와 상태를 유지한다.
Car myCar = new Car(); // 객체 생성
myCar.drive();
myCar라는 실체를 통해 클래스에서 정의한 속성 및 동작을 사용할 수 있다.
인스턴스 Instance
인스턴스 객체와 거의 비슷한 의미로 사용되나, 인스턴스는 클래스와 객체 간의 관계를 강조한다. 객체는 모든 인스턴스를 대표하는 포괄적인 의미라면, 인스턴스는 어떠한 클래스로 부터 만들어진 객체라는 것을 강조하기 위한 구체적인 의미를 가진다
- 책상은 객체다 (O) 책상은 인스턴스다 (X)
- 책상은 책상 클래스의 인스턴스이다 (O)
1 ) Car myCar;
Car 클래스 타입의 참조변수인 myCar를 선언한다. 메모리에 참조변수를 위한 공간이 마련되나, 인스턴스가 생성되지 않았기 때문에 아무런 행동도 할 수 없다
2 ) myCar = new Car();
new를 통해 Car클래스의 인스턴스가 메모리에 생성된다 이때 멤버변수(color, speed ...)는 각 자료형에 해당하는 기본값으로 초기화된다. 대입 연산자 = 를 통해 생성된 객체의 주소값이 참조변수 myCar에 저장되며, 이 참조변수를 통해 인스턴스에 접근할 수 있다. myCar.speed = 1; 처럼 참조변수를 통해 인스턴스에 접근한다.
'Java' 카테고리의 다른 글
오버로딩(Overloading)과 오버라이딩(Overriding) (0) | 2024.11.22 |
---|---|
JDK와 JRE의 차이 (0) | 2024.11.20 |
접근제어자 캡슐화, 정보 은닉 (0) | 2024.11.20 |
String, Stringbuffer, Stringbuilder 차이 (0) | 2024.11.20 |
String 문자열 String Pool, ==과 equals() 차이점 (0) | 2024.11.15 |
댓글