6장 클래스와 객체의 개념
객체 : 사용할 수 있는 실체
클래스 : 객체를 만들기 위한 설계도, 객체의 기능(메서드)과 속성(변수)을 구현한 것
*프로그램 문법 요소의 발전 과정 (클래스의 생성 이유)
변수 -> 배열 -> 구조체 -> 클래스
변수 : 다양한 형태의 데이터를 저장하기 위해 각각의 데이터를 저장할 수 있는 변수
배열 : 데이터의 종류가 많아질수록 데이터의 개수만큼 변수명을 짓거나 관리하는 일을 해결하기 위해 만든 문법 요소
같은 자료형인 변수들을 묶어 1개의 새로운 자료형으로 관리할 수 있다.
구조체 : 서로 다른 자료형도 1개의 자료형으로 묶어 관리할 수 있다.
클래스 : 다양한 자료형의 데이터를 묶어 관리할 수 있을 뿐 아니라 데이터를 다양한 기능까지 함께 관리하는 문법 요소
절차지향 프로그래밍 : 순서에 맞춰 단계적으로 실행하도록 명령어를 나열하는 방식
객체지향 프로그래밍 : 프로그램을 객체 단위로 수행하는 방식
자바에서 제공하는 객체지향 문법 요소 : 클래스(일반 클래스/ 추상 클래스) / 인터페이스
클래스 구조 살펴보기
package ...; // 패키지
import ...; // 임포트 클래스 외부 구성요소
class 클래스명 {...} // 외부 클래스
public class A{
int a = 3; // 필드
double abc() {...} // 메서드 클래스 내부 구성요소
A() {...} // 생성자
class 클래스명 {...} // 이너 클래스
}
우리는 클래스를 직접 사용할 수 없다. 클래스의 모든 특징(필드)과 기능(메서드)들을 사용하려면 클래스를 이용해 객체를 만든 후 그 객체 속의 필드와 메서드 등을 사용해야 한다.
클래스에서 객체를 만드는 과정은 생성자가 수행한다. 클래스의 생성자로 객체를 만드는 과정을 인스턴스화라고 하고, 인스턴스화로 만들어진 객체를 인스턴스 라고 한다. 클래스의 내부 구성 요소 중 생성자를 제외한 나머지 요소가 포함돼 있는데, 이를 인스턴스 멤버라고 한다.
객체 생성하기
A()생성자로 만든 객체를 힙 메모리에 넣고, 위칫값을 A타입의 참조 변수 a에 저장하라
-참조 변수는 실제 데이터를 저장하는 것이 아닌 실제 데이터가 있는 힙 메모리의 위칫값을 가리키는 변수이다.
-new 키워드는 ~을 힙 메모리에 넣어라는 의미이다.
-생성자가 실행되면 클래스의 객체가 생성된다. 따라서 new는 생성자의 결과물로 나온 객체를 힙 메모리에 넣는다.
-실제 메서드 구현 코드는 클래스 영역 안에 저장해 놓고, 객체 안에서는 메서드 영역의 위치만 가리키고 있다는 것이다.
1개의 클래스로 만든 모든 객체는 속성(필드)은 달라도 기능(메서드)은 동일하기 때문이다. 따라서 동일한 클래스로
만든 객체들은 기능(메서드)의 내용이 동일하므로 메서드를 공유할 수 있다.