개발 잘 하고 싶다 => 알고 쓰자/Java

[Java] class 와 instance 의 차이

장 상 현 2021. 5. 1.

인스턴스와 클래스의 차이,

클래스는 메서드와 변수들을 모아놓은 것으로, 지금까지 복잡한 코드들을 한 번의 서랍으로 정리한 것을 말한다.
그런데, 뭐하나를 수정하려고 하면, 일일히 수정해서 다시 써야만 하고 엄청나게 복잡한 과정을 거치게 된다.

인스턴스는 이런 클래스들의 단점을 보완하기 위하여 등장했다. 그래서 클래스에서 그대로 복제해와서 부분 부분만 바꾸어서 클래스들의 성질을 모두 이용한다. 웜마 효율 짱!


인스턴스가 좋은점?


클래스가 무엇이었나. 번잡한 변수들과 메서드들을 모아서 잘 정리한 서랍 아니었나.

그런데 집 서랍을 잘 보아라, 다양한 서랍이 있다.
이 서랍의 손잡이는 분홍색으로, 저 서랍의 손잡이는 녹색으로 바꾸고 싶은데,
"서랍"이라는 것은 전 세계의 서랍이 될 수도 있고, 내방 전체의 서랍이 될 수도 있고,
그냥 "서랍"이지 어떤 특정한 서랍은 아니다.
그러다 보니 서랍의 손잡이 색깔을 하나 바꾸려다가
전 세계의 서랍의 손잡이 색깔이 죄다 분홍색이 돼버릴 수도, 녹색이 돼버릴 수도 있다.
우리 집 수납의 손잡이가 죄다 분홍색이라니.. 생각만 해도 끔찍해진다.

그래서 인스턴스 개념이 등장했다.
강의에서는 복제품 냉장고에 대한 이야기를 했다. 이를 좀 더 풀어나가서 방금 이야기했던 서랍 이야기로 돌아가 보자.
서랍의 손잡이 색깔을 하나 바꾸려고 하니까, 아까는 "서랍"이 전체를 지칭하는(클래스) 범위였기 때문에 모든 손잡이 색깔이 바뀌는 불상사가 일어났었다.

그러나, 이제는 딱 하나의 서랍을 지정하는거다. 그리고 걔 이름을 붙여준다. p1, p2와 같이..
그래서 이제는 손잡이를 바꾸는 업자에게 확실하게 이야기할 수 있는 당당함이 생긴다.
"p1이라는 별명을 가진 서랍의 손잡이를 분홍색으로 바꾸어 주세요.." 라고..
p1이라는 별명을 가졌지만 얘도 서랍은 서랍이다. 이제 분홍색 손잡이 서랍이 필요할때마다
전 세계의 서랍의 손잡이 색깔을 변경할 필요 없다.

sonjabiColor p1 = new sonjabiColor();

이렇게 하면 정확하게 우리는 어떤 손잡이의 컬러를 바꿀지 업자에게 지칭해주는 것이다.
그러면 기존 서랍의 성질도 모두 가지고 있으면서도, 손잡이의 컬러만 바꿀 수 있는 엄청난 혁명을 겪는 것이다!
와! 소름!


* 단 주의점은, 기존 클래스에 있는 특허권을 풀어주어야 한다..
static이라고 요놈은 복제를 못하게 막아놓는 특허권과 같다. 이놈을 제거해서 풀어주면 마구잡이로 복제가 가능하다.

 

'개발 잘 하고 싶다 => 알고 쓰자 > Java' 카테고리의 다른 글

[Java] Overriding & Overloading  (0) 2021.05.01

댓글