벌써 [10 롱이]가 넘어가면서 나름대로 빨리 진도를 나갈려고 하는데..
생각처럼 강좌를 쓰는데 시간이 많이 걸리네요...
ㅎㅎ;; 머리 회전이 늦는 관계로... 어떻게 써야 쉽게 쓸까라는 고민과..ㅎㅎ;;
자바 특징 5번째 시간.. 이번 시간에는 다형성에 대해서 보도록 하겠습니다.
다형성 (Polymorphism)
말을 그대로 풀이하면 다양한 형태의 성질을 말하죠.
이말을 좀더 이해하기 쉽게 풀어서 쓴다면...
하나의 인터페이스(Interface)를 사용하여 다양한 구현방법을 제공하는 것을 말합니다.
예를 하나 들어볼까요?
+ 라는 기호가 있습니다. 그런데 이 + 는 프로그램에서 두가지의 뜻이 있습니다.
하나는 숫자와 숫자를 더할 때 합을 계산하는 뜻과
문자와 문자를 더할때 두개의 문자를 붙여서 보여줘라라는 뜻.
그림으로 한번 표현 해볼까요?
이것이 다형성입니다.
한가지 더 예를 들어볼까요?
아래의 그림을 참고 하겠습니다.
도형 클래스, 삼격형 클래스, 마름모 클래스, 원형 클래스가 있습니다.
점부 그린다는 Drow();라는 메소드가 있습니다.
삼각형이나 마름모나 원형 점부 그리기는 하지만 그리는 방법이 다릅니다.
여기서 오버로딩(overloading)이나 오버라이딩(overriding)이 쓰여야되는데...
그 내용은 뒤에 가서 보도록 하겠습니다.
다형성이 어떤것인지 아시겠죠~
자~ 이해가 되지 않으신다면 바로바로 꼬리말로 질문해주세요~
그럼 그 내용을 보충하여 글을 수정해서 업데이트 해드리겠습니다~ ^^
첫댓글 이 글만 봐서는 정확히는 모르겠지만... (+) 기호를 예로 드셨는데요... 같은 (+) 이지만. 때에 따라 상황에 따라 쓰이는 의미가 틀려진다는걸 말씀 하시는거 같은데요... 이 말은 편리하게 사용할수는 지만, 코드의 가독성을 떨어뜨리는거 아닌가요?
가독성이 떨어뜨리는 건 아닌거 같습니다. (+) 기호가 있지만.. 때에 따라서 다른 의미를 부여해서 쓴다는 것이죠.. 도형과 같이 그림으로 표현해드리죠.. 그래도 이해 안가실려나... @@;;
--------------------------업데이트 끝----------------------------------------------------------------
오히려.. 가독성이 높아지지 않을런지요. 문자간의 문자열을 더하는 것을.. CombineString(String str) 이러한 메소드(만약에 있따면..)를 통해서만 가능하다면... 오히려.. + 라는 기호보다 직관적인 가독성에서 떨어지지 않을런지요. 다른 것들도 마찬가지로 특정 메서드 이름은 그 기능을 나타내는 것이고 그 내부적인
것들은 데이터형에 따라서 달라지게 되겠죠.. 하지만.. 더한다거나 칠한다거나.. 우리는 그러한 기능들만 알면 되는거니까요.. 가령 자동차로 예를 들면 가속한다는 것만 알면.. 티코가 가속하는거나.. 그랜저가 가속하는거나.. 엔진내부적으로는 다를겁니다.(안 다르나? -.-) 그러나 우리는 가속한다는 인터페이스만 알면
가속을 시킬 수 있는 것이죠.. ^^ 또 혼자.. 몇자 주절거려봤습니다. ^^;
?? 가독성이라고 하는 것은 쉽게 읽힐수 있는 것을 말하는거 아닌가요? 코드의 가독성이 떨어지지는 않는다고 생각하는데요... 자바의 오버라이딩이나 오버로딩을 이용하여 자동차 종류별로 상속을 시켜버리면 되니까요.. 그리고 주석부분들도 잘 처리가 되어있어서... 제 생각은 그렇습니다.. 제가 또 잘못 이해하고 있나
@@;;; 아무리 찾아봐도.. 저런 다형성 상속때문에 코드의 가독성이 떨어진다는 말은 보이지 않으니.. 제 의견만~ ^^
제 글은 다형성 때문에 가독성이 높다진다는 것인데여.. ㅡ.ㅡ;
@@;; 않을련지요를 잘못 이해했습니다..ㅋㅋㅋㅋ 제가 생각하고 있는게 맞는건가보당..^^;;
ㅡ ㅡ 귀차니즘님의 말씀도 이해가 가지요.. 여기서 예가 + 이니 좋아보여도 한글자여서... ㅡ ㅡ 잘 모르지만 긴단어가 여러가지 의미를 가지고 있음 머리 터집니다... 저는... 그런 의미에선 귀차니즘 말씀도 맞는 말이라고 생각합니다.. 긴단어의 다양한 의미가 있는지도 모르면서 이글을 적습니다.
음... 머라고 설명을 드려야할지...... 쉽계 설명드린다고 드린건데..ㅠㅠ
이거두 그림이 안나오네요
그림은 로그인을 해야 보입니다~