Java/SE2008. 7. 9. 20:14
OOP(Object Oriented Programming)의 특징
    (1) 상속성(inheritance) - Human, Superman, Xman
    (2) 다형성(polymorphism)
    (3) 은닉성(Information Hiding)
    (4) 캡슐화(Encapsulation)


정리 하면 위와 같다.

일단 상속성은 하나의 큰 개체에서 여러개의 개체들이 파생되는것과 같다
좀 어렵게 들린다면 이렇게 생각해보자

인간 클래스가 있다. 그리고 익히 알다시피 미국 헐리우드의 영웅들인
슈퍼맨 클래스 와 액스맨 클래스가 있다.
슈퍼맨과 액스맨은 (물론 슈퍼맨은 클립톤행성에서 온 외계인, 액스맨은 돌연변이 이지만)
인간 클래스부터 상속을 받아서 만들어졌다.
왜? 대부분의 평범한 (여기서 평범한 이란 머리는 하나요 코도 하나요 콧구멍도 하나요.. 등등.. 외형을 말한다)
인간들과 슈퍼맨과 액스맨은 겉으로는 비슷해 보인다.
여기서 많은 공통점을 찾을수 있을것이다.

이렇듯 세가지의 공통적인 부분은 인간클래스에 있고.. 슈퍼맨과 액스맨은
인간 클래스와 동일한부분에(공통점)  대해서 변수를 만든다거나 행위를 만들어 내는것이 아니라
단지 인간클래스를 상속 받음으로서 인간클래스에서 쓰이는 것들을 다 쓸수 있게되는것이다.

두번째로 일단 생각해보면 슈퍼맨과 엑스맨은 기본적으로 사람의 외형을 가지고 있지만
그들은 사람이 할 수 없는 일들을 해낼수가 있다. 그렇게 하기 위해서 일부 행위들이 변경되고
수치들도 변화하게 되고 추가가 될 수도 있다.
이것이 바로 다형성이다.
상속을 받은 슈퍼맨은 날아다닐수 있게되고, 눈은 보는것 뿐만 아니라 레이져를 쏠수도 있을것이다.
인간이 1초에 1걸음을 걷는다면 슈퍼맨은 100걸음을 걸을수도 있을것이다.
이렇듯 인간과 슈퍼맨은 다른 능력을 가지는데 같은 행위에서 다른 모습을 보일수도 있는것..
말그대로 다형성이 되겠다.

다음으로는 은닉성, 캡슐화 가 되겠다.
이건 더더욱 설명이 쉽겠다.
슈퍼맨은 알다시피 자기자신을 숨겨왔다.. 왜???   자기자신이 인간과 다르다는걸 숨겨야 했다.

그냥 보여주면 안돼????  라고 묻는다면 이렇게 물어보고 싶다..
슈퍼맨과 신문기자인 클락캔트가 같다 라는것을 사람들이 전부 안다면?
1. 일단 영화가 재미가 없다.
2. 그럼 대체 왜 슈퍼맨이 필요해? 그냥 클락캔트로 하지..

여기서 은닉성은 슈퍼맨이 인간인 척 할수 있다는것이다. 반대로 인간은 슈퍼맨인척 할수 없을것이고..
캡슐화는 슈퍼맨에서 비유하자면 슈퍼맨의 능력에 관해서는
슈퍼맨 스스로가 조절이 가능하다는것이다. 캡슐화하지 않는다는것은 슈퍼맨의 능력치를
다른 사람들이 마구 조절이 가능할수도 있다는것이다(상상이 되는가??)

쩝.. 쓰다보니 좀 논란이 될 비유들이 넣어졌지만.. 이해를 쉽게 하고자 쓴것이니..
오해하지말고 비난하지 말아 주시길...  아니.. 욕만 안하고 비평해주시면 감사하겠습니다~ ^^

Posted by 햇 님