객체가 인스턴스 아니야?
라는 의문점은 충분히 가질 수 있는 부분이다.
많은 사람들이 붕어빵에 비유하는데 나는 더 간단하게 아이폰을 예시로 들어보겠다.
아이폰의 제조 공정이 들어있는 클래스를 A라고 해보자.
그렇다면 A클래스안에는 아이폰의 화면을 만들어주는 메소드인 makeDisplay() 와 같은 메소드들이
그리고 여러가지 변수들이 들어있다.
A클래스로 객체를 만들어보자
A newIphone=new A(); 간단하게 이렇게 만들 수 있는데 이렇게 내가 만들어낸 코드가 run할떄 객체와 인스턴스의 차이가
생겨난다. 분명 저 코드는 객체를 생성하는 코드가 맞다.그렇다면 인스턴스는 대체 뭐지?하는 의문이 들 것이다.
간단하게 설명해보자.
코드를 실행하면 우리가 가진 디바이스 혹은 데스크탑의 메모리 부분에 해당 객체가 동적 생성된다.
메모리에 동적생성이 완료되어 할당이 된다면 이 순간에 객체의 인스턴스 화가 이루어진것이다.
그렇다면 이런 순서가 완성되는 것을 알 수있다.
1.클래스는 설계도이다.이 설계도를 기반으로 객체를 만든다.
2.객체는 설계도 기반으로 만들어진 것이다.
3.만들어진 객체가 메모리..?
뭔가 이상하다 만들어진 객체가 또 메모리에 어느 부분에 할당이 되어야 한다면 대체 객체는 어디서 놀고 있는거지?
말이 안된다.
다시 한번 생각해보자 객체는 객체의 인스턴스 화를 통하여서 비로소 모습이 완성되는 거다.
그렇다면 객체라는 것은 추상적인 개념일 것이다.
아!객체는 결국 추상적인 개념인거다.
그렇다면 결론은 아래와 같다.
클래스를 통하여서 만들어진 추상적인 개념인 객체가 메모리에 할당된 상태를 인스턴스라 부른다.
꽤나 난해한 문제이며 내 풀이가 맞는지는 계속 공부해나가면서 테스트해봐야겠다.