클래스는 특정 객체를 생성하기 위해 변수와 메소드를 정의하는 일종의 틀(template)이다. 객체를 정의하기 위한 메소드와 변수로 구성된다.
클래스를 일종의 틀이라고 하는데, 클래스를 어떻게 이해해야할까?
예를 들어, 차라는 단어를 보면 각자 사람마다 떠오르는 차의 형태가 있을 것이다.
사람 | 차 |
---|---|
A | 🚗 |
B | 🚙 |
C | 🚚 |
D | 🚌 |
사람들이 떠올린 네 가지의 차는 다 다른 차이다.
하지만 네 종류의 차는 모두 공통점을 가지고 있다.
이 외에도 정말 많은 공통점이 있는데, 이러한 공통점을 가진 대상이 차이다.
따라서 차라는 추상적인 개념은 다양한 종류의 차의 근본이 되는 틀이라고 할 수 있으며, 이렇게 틀이 되는 것을 클래스라고 한다.
인스턴스란 클래스를 통해 생성된 객체를 의미한다.
쉽게 말하면 차라는 틀을 기반으로 만들어진 🚗 🚙 🚚 🚌 이 차들을 인스턴스라고 할 수 있다.
인스턴스는 독립적인 존재이며, 클래스에 있는 기능들을 사용할 수 있다.
예를 들어, 차라는 클래스가 있다고 가정해보자.
차 클래스 // 차가 공통적으로 가지는 구성요소와 기능을 정의한다.
{
// 차 구성요소 = 속성
// 변경 가능함
기종 = 미정
색상 = 미정
// 변경 불가능함
바퀴 = [앞 오른쪽, 앞 왼쪽, 뒤 오른쪽, 뒤 왼쪽]
사이드미러 = [오른쪽, 왼쪽]
// 차 기능 = 메소드
시동키기() {}
전진() {}
후진() {}
주차() {}
오른쪽깜빡이키기() {}
왼쪽깜빡이키기() {}
// 차를 인스턴스로 생성할 때 실행되는 특수한 함수
차_출고시_선택사항(기종, 색상) {
기종 = 기종
색상 = 색상
}
}
클래스 내부에 선언된 변수를 프로퍼티, 함수는 메소드라고 한다.
차 클래스로 여러 종류의 차들을 만들어보자.
// 아래 차들은 차 클래스의 인스턴스들이다.
모닝 = 차(모닝, 노란색)
아반떼 = 차(아반떼, 파란색)
쏘렌토 = 차(쏘렌토, 흰색)
모닝, 아반떼, 쏘렌토 모두 차의 기능들을 사용할 수 있다.
모닝.시동키기()
아반떼.시동키기()
아반떼.전진()
아반떼.주차()
쏘렌토.시동키기()
쏘렌토.오른쪽깜빡이키기()
클래스의 장점은 하나의 클래스에서 프로퍼티, 메소드를 선언하면 해당 클래스의 인스턴스에서 해당 프로퍼티, 메소드를 사용할 수 있다는 점이다.
다시보면 차 클래스에 시동을 끄는 기능이 없다.
차 클래스
{
// ...생략
시동끄기() {}
}
// ...생략
모닝.시동끄기()
아반떼.시동끄기()
쏘렌토.시동끄기()
클래스에서 시동끄기 메소드를 선언하면 모닝, 아반떼, 쏘렌토에서 모두 다 시동을 끌 수 있게 된다.
클래스와 인스턴스는 직접 생각해볼 수 있는 것들을 떠올리면서 이해해나가면 된다.
공 클래스에서 ⚽️ 🏀 🥎 🏐 🎱 여러 종류의 공 인스턴스를 생성할 수 있다.
음식 클래스에서 🍛 🍣 🍔 🍳 🍝 여러 종류의 음식 인스턴스를 생성할 수 있다.
좋은 예시가 있다면 댓글로 달아주세요! 🤗