클래스 (Class)
- 사람의 입장에서 데이터를 쉽고 직관적으로 관리하기 위해서 도입된 개념이다.
- 사용자가 직접 정의하는 사용자 정의 타입을 만들기 위한 설계도가 "클래스"
- ex) "학생"이라는 타입을 만들어서 관리하기 위해서 "학생" 클래스를 만든다.
- 클래스 = 객체를 생성하기 위한 '틀', '설계도'
- 객체가 가져야할 변수(속성), 메소드(기능)를 정의한다.
- 객체는 클래스에서 정의한 변수(속성)와 메소드(기능)를 가진 실체
class Student {
String name;
int age;
int grade;
}
- 클래스 내부에 정의한(소속된) 변수들을 멤버 변수, 필드라고 한다.
- 클래스 명은 관례에 따라 대문자로 시작, Camel Case로 작성한다.
- ex) UniversityStudent
Student student = new Student();
//위 코드의 흐름
Student student = new Student(); // 1.Student 클래스의 객체 생성
Student student = x001; // 2.생성된 객체의 참조(주소) 값 예시
student = x001; // 3.객체의 참조 값이 Student 타입의 student 변수에 대입
- 설계도인 클래스를 사용해서 실제 메모리에 만들어진 실체를 "인스턴스(instance)", "객체"라고 한다.
- Student 타입 변수에는 객체 자체가 아닌 객체의 위치를 가리키는 참조 값이 들어있다!!
- "자바에서 대입은 항상 변수에 들어있는 값을 복사해서 전달한다" => 중요한 자바 원칙!!
- 기본 형 변수, 참조형 변수 모두 동일한 원칙으로 적용된다.
- 그래서 다른 Student 타입 변수에 대입을 하더라도 기존 변수가 가지고 있던 참조 값을 복사해서 전달한다.
- "자바에서 대입은 항상 변수에 들어있는 값을 복사해서 전달한다" => 중요한 자바 원칙!!
- 여기서 Student는 클래스, student는 Student 타입을 받을 수 있는 변수다.
- new Student()는 새로운 객체를 생성 => 생성한 객체를 Student 타입의 변수 student에 대입해주는 것
변수에는 객체에 접근할 수 있는 참조(주소) 값이 들어가게 된다.- new 키워드를 통해 객체가 생성되고 나면 참조 값을 리턴한다.
- 객체에는 Student 클래스가 가지고 있는 맴버 변수를 사용하는데 필요한 메모리 공간도 함께 확보된다.
- new Student()는 새로운 객체를 생성 => 생성한 객체를 Student 타입의 변수 student에 대입해주는 것
참조 값을 변수에 저장하는 이유?
=> 객체를 생성하는 new Student() 자체는 메모리에 실제 객체를 만드는 코드일 뿐 아무런 이름이 없다.
그렇기에 생성한 객체에 접근할 방법이 필요한데 변수에 참조 값을 저장해두고 실제 객체에 접근할 수 있도록 하는 것이다.
Student student = new Student();
// 객체에 접근하기 위해서 .을 사용한다.
student.name = "James";
// student 객체의 참조 값이 x001이라 가정
x001.name = "James";
- 배열에서는 배열 인덱스에 접근하기 위해서 대괄호 []를 사용했던 것과 같이 객체에 접근하기 위해서는 .을 사용한다.
- . 키워드는 변수에 저장된 참조 값을 읽어서 메모리에 존재하는 객체에 접근한다.
출처 : [인프런 김영한 실전 자바 - 기본편]
김영한의 실전 자바 - 기본편 강의 | 김영한 - 인프런
김영한 | 실무에 필요한 자바 객체 지향의 핵심 개념을 예제 코드를 통해 쉽게 학습합니다., 국내 개발 분야 누적 수강생 1위, 제대로 만든 김영한의 실전 자바[사진][임베딩 영상]단순히 자바 문
www.inflearn.com
'Java > [인프런 김영한 실전 자바 - 기본편]' 카테고리의 다른 글
[인프런 김영한 실전 자바 - 기본편] 접근 제어자 (0) | 2024.07.16 |
---|---|
[인프런 김영한 실전 자바 - 기본편] 패키지 (0) | 2024.07.15 |
[인프런 김영한 실전 자바 - 기본편] 생성자 (0) | 2024.07.15 |
[인프런 김영한 실전 자바 - 기본편] 객체 지향 프로그래밍 (0) | 2024.07.15 |
[인프런 김영한 실전 자바 - 기본편] 기본형과 참조형 (0) | 2024.07.15 |