랩터
[Java] 클래스,객체 본문
클래스(Class)란 이러한 객체를 정의한 '설계도(blueprint)' 또는 '틀(frame)’이라 정의할 수 있습니다. 즉, 클래스는 객체를 생성하는 데 사용되며, 반대로 객체는 클래스에 정의되고 설계된 내용 그대로 생성됩니다.
클래스를 통해 생성된 객체를 우리는 해당 클래스의 인스턴스(instance)라 부릅니다. 또한 클래스로부터 객체를 만드는 과정을 우리는 인스턴스화(instantiate)라 지칭합니다.
1.변수 선언
Student student1 // Student 변수 선언
Student 타입을 받을 수 있는 변수를 선언한다.
int 는 정수를, String 은 문자를 담을 수 있듯이 Student 는 Student 타입의 객체(인스턴스)를 받을 수 있다.
2.객체 생성
student1 = new Student() // Student 인스턴스 생성
객체를 사용하려면 먼저 설계도인 클래스를 기반으로 객체(인스턴스)를 생성해야 한다.
new Student() : new 는 새로 생성한다는 뜻이다. new Student() 는 Student 클래스 정보를 기반으로 새로운 객체를 생성하라는 뜻이다. 이렇게 하면 메모리에 실제 Student 객체(인스턴스)를 생성한다.
객체를 생성할 때는 new 클래스명() 을 사용하면 된다. 마지막에 () 도 추가해야 한다.
Student 클래스는 String name , int age , int grade 멤버 변수를 가지고 있다. 이 변수를 사용하는 데 필요한 메모리 공간도 함께 확보한다.
3.참조값 보관
student1 = x001; //Student 인스턴스 참조값 보관
new키워드를 통해 객체가 생성되고 나면 참조값을 반환한다. 앞서 선언한 변수인 Student student1에 생성된 객체의 참조값(x001)을 보관한다.
이 과정을 간편하게 줄여서 다음처럼 선언할 수 있다.
클래스명 참조_변수명 = new 생성자();
클래스-Class
클래스는 객체를 생성하기 위한 '틀' 또는 '설계도'이다. 클래스는 객체가 가져야 할 속성(변수)과 기능(메서드)를 정의한 다. 예를 들어 학생이라는 클래스는 속성으로 name , age , grade 를 가진다.
- 틀: 붕어빵 틀을 생각해보자. 붕어빵 틀은 붕어빵이 아니다! 이렇게 생긴 붕어빵이 나왔으면 좋겠다고 만드는 틀일 뿐이다. 실제 먹을 수 있는 것이 아니다. 실제 먹을 수 있는 팥 붕어빵을 객체 또는 인스턴스라 한다.
객체 - Object
객체는 클래스에서 정의한 속성과 기능을 가진 실체이다. 객체는 서로 독립적인 상태를 가진다.
예를 들어 위 코드에서 student1 은 학생1의 속성을 가지는 객체이고, student2 는 학생2의 속성을 가지는 객체이 다. student1 과 student2 는 같은 클래스에서 만들어졌지만, 서로 다른 객체이다.
인스턴스 - Instance
인스턴스는 특정 클래스로부터 생성된 객체를 의미한다. 그래서 객체와 인스턴스라는 용어는 자주 혼용된다. 인스턴스 는 주로 객체가 어떤 클래스에 속해 있는지 강조할 때 사용한다. 예를 들어서 student1 객체는 Student 클래스의 인스턴스다. 라고 표현한다.
객체 vs 인스턴스
둘다 클래스에서 나온 실체라는 의미에서 비슷하게 사용되지만, 용어상 인스턴스는 객체보다 좀 더 관계에 초점을 맞춘 단어이다. 보통 student1 은 Student 의 객체이다. 라고 말하는 대신 student1 은 Student 의 인스턴스이다. 라고 특정 클래스와의 관계를 명확히 할 때 인스턴스라는 용어를 주로 사용한다.
하지만 둘다 클래스에서 나온 실체라는 핵심 의미는 같기 때문에 보통 둘을 구분하지 않고 사용한다.
'공부 > JAVA' 카테고리의 다른 글
[Java]생성자 (0) | 2024.06.26 |
---|---|
[Java] 기본형과 참조형 (0) | 2024.06.25 |
[Network] 네이티브 애플리케이션 vs 웹 애플리케이션 (0) | 2024.06.11 |
[JAVA] 구구단 프로그램(제어문 및 반복문) (0) | 2024.06.10 |
[JAVA] 자바의 특징 (0) | 2024.06.09 |