2013년 1월 11일 금요일

[Java] 다형성

자바에 자료구조를 보면 ArrayList클래스가 존재한다.
이 클래스를 활용하여 어떤한 객체든 리스트로 만들어 관리할 수 있다.

여기서 중요한 것은 어떠한 객체라도 가능하다는 점이다.

자바에는 수많은 클래스로부터 생성된 객체가 많이 존재한다. 그런데 어떠한 객체도 관리가 가능하다는 것은 프로그래머로서는 상당히 유용한 점이다.

그렇다면 어떻게 그것이 가능할까???

String 클래스와 같은 자바에서 기본으로 제공하는 클래스뿐만 아니라 프로그래머가 정의한 클래스 등 모든 클래스는 Object클래스를 상속하는 관계에 있다. 즉 모든 클래스는 Object클래스의 자식 클래스인 것이다.

따라서 Object를 상속받은 모든 객체는 Object를 상속했다라는 하나의 공통점, 즉 같은 부모로부터 상속했고 Object클래스는 자식클래스를 자신의 클래스로 형변환하여 어떠한 객체의 주소값도 취할 수 있게 된다.
따라서 자신 뿐만아니라 상속관계의 자식 클래스까지 참조할 수 있고 이것이 다형성이라는 것이다.

잘 이해가 안되더라도 다음 한가지 사실을 기억하자!
자식은 부모가 되었다가 다시 자식이 된다.(자식은 자유자재로)
부모는 절대 자식이 되지 못한다.(부모는 항상 부모)


이러한 형변환은 실제 많이 일어난다. 따라서 어떤 객체의 형변환에 대해 알아보기 위해
instanceof 라는 키워드로 확인해보는 작업 또한 많이 한다.

Account obj = new Account();
obj instatnceof CheckingAccount

변환이 가능하면 true
불가능하면 false

댓글 없음:

댓글 쓰기