1. 클래스와 객체
- 클래스(class)란?
객체를 정의해놓은 것
or
객체의 설계도 또는 틀
클래스는 객체를 생성하는데 사용되며, 객체는 클래스에 정의된 대로 생성된다.
클래스의 정의 : 클래스란 객체를 정의해 놓은 것이다.
클래스의 용도 : 클래스는 객체를 생성하는데 사용된다.
- 객체(object)란?
실제로 존재하는 것
→ 클래스에 정의된 내용대로 메모리에 생성된 것
객체의 정의 : 실제로 존재하는 것. 사물 또는 개념
객체의 용도 : 객체가 가지고 있는 기능과 속성에 따라 다름
유형의 객체 : 책상, 의자, 자동차, TV와 같은 사물
무형의 객체 : 수학공식, 프로그램 에러와 같은 논리나 개념
- 클래스와 객체의 관계
제품 설계도와 제품과의 관계
ex) TV설계도(클래스)는 TV라는 제품(객체)을 정의한 것이며, TV(객체)를 만드는데 사용된다.
* 클래스는 단지 객체를 생성하는데 사용될 뿐, 객체 그 자체는 아니다.
2. 객체와 인스턴스
어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스(instance)라고 한다.
→ 클래스로부터 객체를 만드는 과정 = 클래스의 인스턴스화(instantiate)
- 무엇이 다른가?
- 객체 : 모든 인스턴스를 대표하는 포괄적인 의미
ex) 책상은 인스턴스다(x), 책상은 객체다(o)
- 인스턴스 : 어떤 클래스로부터 만들어진 것인지를 강조
ex) 책상은 클래스의 객체이다(x), 책상은 클래스의 인스턴스다(o)
* 인스턴스와 객체는 같은 의미이므로 엄격히 구분할 필요는 없지만, 위에처럼 문맥에 따라 구별하여 사용하는 것이 좋다.
3. 객체의 구성요소(속성과 기능)
객체는 속성과 기능, 두 종류의 구성요소로 이루어져 있으며, 일반적으로 객체는 다수의 속성과 다수의 기능을 갖는다. 객체가 가지고 있는 속성과 기능을 그 객체의 멤버(member)라고 한다.
→ 클래스는 객체를 정의한 것이므로 클래스에는 객체의 모든 속성과 기능이 정의되어있다.
- 속성(property)
→ 멤버변수(member variable), 특성(attribute), 필드(field), 상태(state)
- 기능(function)
메서드(method), 함수(function), 행위(behavior)
// tv로 예시
class Tv {
// 멤버변수(variable)
String color; // 색깔
boolean power; // 전원상태
int channel; // 채널
// 메서드(method)
void power() { power = !power; }
void channelUp() { channel++; }
void channelDown() { channel--; }
// 일반적으로는 메서드보다는 멤버변수를 먼저 선언하고
// 멤버변수는 멤버변수끼리 메서드는 메서드끼리 모아 놓는다.
}
참고문헌 : 남궁성(2016), Java의 정석, 도우출판