자바 - 객체와 인스턴스, 객체의 구성요소(속성과 기능)
객체(Object)와 인스턴스(Instance)
클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화(instantiate)라고 하며, 어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스(instance)라고 한다.
인스턴스는 객체와 같은 의미이지만, 객체는 모든 인스턴스를 대표하는 포괄적인 의미를 갖고 있으며, 인스턴스는 어떤 클래스로부터 만들어진 것인지를 강조하는 보다 구체적인 의미를 갖고있다.
예를 들면, '스마트폰은 인스턴스다'라고 하기보다는 '스마트폰은 객체다.'라는 쪽이, '스마트폰은 스마트폰 클래스의 객체다.'라고 하기보다는 '스마트폰은 스마트폰 클래스의 인스턴스다'라고 하는 것이 더 자연스럽다. 인스턴스와 객체는 같은 의미이므로 두 용어의 사용을 엄격히 구분할 필요는 없지만, 문맥에 따라 구별하여 사용하는 것이 좋다.
객체의 구성요소(속성과 기능)
객체는 속성과 기능, 두 종류의 구성요소로 이루어져 있으며, 일반적으로 객체는 다수의 속성과 다수의 기능을 갖는다. 즉, 객체는 속성과 기능의 집합이라고 할 수 있다. 그리고 객체가 가지고 있는 속성과 기능을 그 객체의 멤버(구성원, member)라 한다.
클래스란 객체를 정의한 것이므로 클래스에서는 객체의 모든 속성과 기능이 정의되어있다. 클래스로부터 객체를 생성하면, 클래스에 정의된 속성과 기능을 가진 객체가 생성되는 것이다.
속성(property) - 멤버 변수(member variable), 특성(attribute), 필드(filed), 상태(state)
스마트폰의 속성 - 크기, 길이, 높이, 색상, 해상도 등
기능(function) - 메서드(method), 함수(function), 행위(behavior)
스마트폰의 기능 - 전원 on/off, 잠금해제 , 볼륨 up/down, 메시지 보내기, 사진 및 영상 촬영 등
스마트폰 클래스에서 위의 속성과 기능 중에 몇가지를 간단하게 코드로 작성해보면 다음과 같다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | class SmartPhone { // *변수 String color; // 색상 boolean power; // 전원상태(on/off) int volume; // 볼륨 // *메서드 void power(){ // 전원 on/off power = !power; } void volumeUp(){ // 볼륨 높이기 ++ volume; } void volumeDown(){ // 볼륨 낮추기 -- volume; } } | cs |
출처 및 참조 : 자바의 정석 232 ~ 234p
http://www.yes24.com/24/goods/24259565?scode=032&OzSrank=1