250x250
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
Tags
- dfs
- AWS SAA-C03 합격후기
- python list method
- 파이썬
- 플랫폼 클래스 로더
- java
- 파이썬 리스트 메서드
- Spring
- python
- BFS
- 딕셔너리
- 객체지향
- 2026 AWS SAA-C03
- 컴포넌트 스캔
- 백준
- 어플리케이션 클래스 로더
- 심볼릭 레퍼런스
- 다이렉트 레퍼런스
- 스프링 컨테이너
- stop the world
- 파이썬 문자열 메서드
- 클래스 로더 계층
- 코딩테스트
- 알고리즘
- getreference
- 부트스트랩 클래스 로더
- 자바
- aws saa-c03
- 스프링
- 자료구조
Archives
- Today
- Total
클라우드 낚시꾼
[JAVA 자바] 클래스와 객체 생성 + 내부 동작 알아보기 본문
728x90
이번 글에서는 JAVA에서 어떻게 클래스를 통해 객체를 생성하고, 내부적으로는 무슨 일이 발생하는 지에 대해 알아볼 것이다. 먼저, 개념을 알아보자.
클래스, 객체, 인스턴스

- 클래스: 객체의 설계도로서 객체의 특징(멤버 변수)과 기능(메서드)을 포함하고 사용자 정의 타입으로 불린다 (ex) 아이폰 설계도
- 객체: 클래스로부터 만들어져 메모리에 존재하는 실체 (ex) 생성된 아이폰
- 인스턴스: 클래스로부터 만들어진 실체로서 특정 클래스로부터 생성된 객체를 의미 (ex) 생성된 아이폰
객체, 인스턴스는 클래스로부터 만들어진 실체라는 점만 기억하면 된다. 인스턴스는 객체보다 조금 더 클래스와의 관계를 강조하는 용어이다. 아래는 그 예시다.
- Student 클래스를 인스턴스화 하여 student1 객체를 생성
- student1 객체는 Student 클래스의 인스턴스
클래스, 객체 자바 코드 내부 동작 과정
아래 프로그램은 Student 클래스로 Student 객체를 생성하여 그 객체를 다루는 프로그램이다.
package class1;
public class Student {
String name;
int age;
int grade;
}
public class ClassStart3 {
public static void main(String[] args) {
Student stud1 = new Student();
stud1.name = "학생1";
stud1.age = 15;
stud1.grade = 90;
Student stud2 = new Student();
stud2.name = "학생2";
stud2.age = 16;
stud2.grade = 80;
System.out.println("이름1 : " + stud1.name + " 나이: " + stud1.age + " 성적: " + stud1.grade);
System.out.println("이름2 : " + stud2.name + " 나이: " + stud2.age + " 성적: " + stud2.grade);
}
}
- Student stud1 -> Student 클래스 타입 변수 선언
- Student 클래스 변수를 생성하면 Student 객체의 참조값을 저장할 수 있는 참조 변수가 생성된다.
- stud1 = new Student() -> new 연산자로 Student 객체를 메모리에 생성
- Student 클래스 설계도를 따라 실제 Student 객체를 만들어 메모리에 저장한다.
- 메모리 공간에는 그 객체가 가지고 있는 멤버 변수, 메서드가 저장된다.
- stud1 = x001 -> new 키워드는 객체를 생성하고 그 객체의 참조값을 반환한다.
-
앞서 선언한 변수인 `Student student1`은 생성된 객체의 참조값( `x001` )을 보관한다.
- student1 변수는 이제 참조값(x001)에 있는 Student 객체에 접근할 수 있다.
-
- stud1.name = "학생2" -> stud1에 저장된 참조값을 통해 실제 메모리에 존재하는 객체에 접근하여 name 멤버에 값을 저장한다.
- 참조 변수가 가진 참조값을 통해 실제 메모리에 접근할 때는 '.'을 이용한다.
그림으로 간단하게 이해하기

요약 및 TMI
지금까지 한 내용을 간단하게 코드로 나타내면 다음과 같다.
Student student1 = new Student(); //1. Student 객체 생성
Student student1 = x001; //2. new Student()의 결과로 x001 참조값 반환
student1 = x001; //3. 최종 결과
TMI) 타입이 클래스인 변수를 출력하면 변수의 참조 값을 확인할 수 있다.

참고 및 출처
이 글을 김영한 개발자 님의 강의를 듣고 작성했습니다.
김영한의 실전 자바 - 기본편 강의 - 인프런
실무에 필요한 자바 객체 지향의 핵심 개념을 예제 코드를 통해 쉽게 학습합니다., 국내 개발 분야 누적 수강생 1위, 제대로 만든 김영한의 실전 자바[사진][임베딩 영상]단순히 자바 문법을 안다
www.inflearn.com
728x90
'Programming Language > JAVA' 카테고리의 다른 글
| [JAVA] 심볼릭 레퍼런스와 다이렉트 레퍼런스 (0) | 2024.11.13 |
|---|---|
| [JAVA] JVM의 클래스 로더 알아보기 (1) | 2024.11.12 |
| [JAVA 자바] 변수의 종류와 초기화 + Null (0) | 2023.12.31 |
| [JAVA 자바] 기본형과 참조형 + Call by Value (1) | 2023.12.29 |
| [JAVA 자바] - 클래스와 객체의 필요성 (0) | 2023.12.29 |