Class 논리적인 부분의 개념
설치류, 포유류, 조류, 어류 등과 같이 공통된 형태나 행동 등으로 분류해 놓은 것
예 > 포유류
젖샘이 있다. (형태)
수유를 한다. (행동)
Class 기술적인 부분의 개념
변수와 메소드를 하나로 묶어 놓은 개념
Java 프로그래밍 언어의 근본 개념
모든 코드는 class로 작성이 되어야 한다.
형태는 변수로 표현한다. (멤버변수, 인스턴스필드)
행동은 메소드로 표현한다. (인스턴스메소드)
클래스와 인스턴스
- 클래스는 객체지향프로그래밍에서 가장 중요한 개념
- 객체지향프로그래밍 (OOP)
수행 과제나 문제를 실세계의 객체로 표현해
사람이 알기 쉽게 풀어나갈 수 있는 방법- 클래스
존재할 수 있는 사물을 추상화 시켜놓은 개념
Java에서는 Reference Type의 자료형에 해당한다.- 객체
클래스를 변수로 만든 것을 의미
일반적으로 객체는 “인스턴스” 라고 부른다.
클래스를 인스턴스로 만드는 과정을 “인스턴스화“ 한다 라고 표현- 클래스를 인스턴스로 만드는 인스턴스화의 과정은
“생성자 메소드"를 호출하는 것과 동일하다.
실세계에 존재하는 모든 질량이 있는 사물들은 두 가지로 표현이 가능하다.
속성이란, 사물이 가지는 여러 특성/특징 들을 말한다.
(자동차의 속성이라면)
기능이란, 클래스(객체)가 할 수 있는 기능(행동)을 말한다.
(자동차의 속성이라면)
클래스의 속성
“변수“ 로 정의
“멤버변수“ 혹은 “인스턴스 필드" 라고 부른다.
클래스의 기능
“메소드"로 정의
“인스턴스 메소드"라고 부른다.
멤버변수의 대상
인스턴스 메소드의 영향을 받는 변수들.
영향을 받지 않는 변수는 제거하거나 상수로 변경해야 한다.
일부 멤버변수는 메소드의 실행상태를 제어하기도 한다.
예를들어 시동이 꺼져 있을 때 가속페달을 누르면 아무 일도 일어나지 않아야 한다.
예 >
public class Car {
boolean isEngineStart;
int speed;
public void pressEngineStartButton() {
if (isEngineStart) {
System.out.println("시동을 끕니다.");
isEngineStart = false;
speed = 0;
}
else {
System.out.println("시동을 켭니다.");
isEngineStart = true;
speed = 10;
}
}
public static void main(String[] args) {
Car car = new Car();
car.pressEngineStartButton();
car.pressGasolinPedal(10);
car.pressBrakePedal(10);
car.pressEngineStartButton();
}
클래스를 변수로 사용하려면, 인스턴스로 만들어야 한다.
new Car(); // Car 클래스를 인스턴스로 생성.
인스턴스가 만들어지면 변수에 할당해야 사용할 수 있다.
Car car = new Car(); // 인스턴스를 만들어 Car 타입의 car 변수에 할당.
Reference Type의 변수는 “인스턴스"라고 부르는데 Car 클래스는 Reference Type이므로 car 변수는 인스턴스이다.
Reference Type의 인스턴스는 Primitive Type에는 없는 특별한 점 연산자 (“ . ” )를 사용할 수 있다.
car.pressEngineStartButton(); // car 인스턴스의 pressEngineStartButton 메소드를 실행해라 라는 뜻
Reference Type?
Reference Type은 “메모리 참조타입” 을 말한다.
여러 변수들의 메모리 공간을 종류별로 묶어 그 주소를 참조
Primitive Type와 Reference Type의 차이점
Primitive Type
정해진 Byte크기 만큼 메모리를 할당
항상 값을 참조
Reference Type
여러 개의 Primitive Type과 여러 개의 Reference Type,
여러 개의 메소드를 사용하므로, 하나의 메모리로 사용할 수 없습니다.
항상 메모리 주소를 참조
Reference Type 메모리 참조 예시
JVM(Java Virtual Machine)의 메모리 구조
Car 클래스의 구조와 메모리