티스토리 뷰
우선 다형성이 어떤것인지 알아보기 전에 소스먼저 보겠습니다,
부모 자식 두 클래스에 같은 이름에 메쏘드가 있는경우 결과는 자식 클래스의 메쏘드가 실행됨을 알 수 있습니다.
부모나 자식 둘중 하나만 메쏘드를 가지고 있는 경우에대해서 보겠습니다.
부모만 메쏘드를 가지고 있는 경우에는 실행이 잘 됩니다.
반대로 하게되면 오류가 발생합니다.
즉 A가 의미하는것은 데이터타입과 비슷하다고 할 수 있습니다.
A클래스에 있는 메소드나 변수를 사용하겠다는 것입니다.
그렇다면 왜 다형성이 필요한 것 일까요?
다음 예제를 보면서 확인해 보겠습니다.
다형성을 사용하면 다음과 같이 구성됩니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | package kw.ac.kw.oh201174101820150903; class animal{ String name; public void setname(String name){ this.name = name; } public void makenoise() { } public void runn(){ makenoise(); } } class wolf extends animal{ public void makenoise() { System.out.println(name+"=woooooooo"); } } class dog extends animal{ public void makenoise() { System.out.println(name+"=dooooooo"); } } public class Javahellow { public static void runn(animal anim){ System.out.println("달립니다."); anim.runn(); } public static void main(String[] args) { animal dog = new dog(); dog.setname("dog1"); animal wolf = new wolf(); wolf.setname("wolf1"); runn(dog); runn(wolf); } } | cs |
ㅇ
하지만 다형성을 사용안한다면 아래와 같이 코드의 중복이 나타나게 됩니다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | package kw.ac.kw.oh201174101820150903; class animal{ String name; public void setname(String name){ this.name = name; } public void makenoise() { } public void runn(){ makenoise(); } } class wolf extends animal{ public void makenoise() { System.out.println(name+"=woooooooo"); } } class dog extends animal{ public void makenoise() { System.out.println(name+"=dooooooo"); } } public class Javahellow { public static void runn(dog anim){ System.out.println("달립니다."); anim.runn(); } public static void runn(wolf anim){ System.out.println("달립니다."); anim.runn(); } public static void main(String[] args) { dog dog = new dog(); dog.setname("dog1"); wolf wolf = new wolf(); wolf.setname("wolf1"); runn(dog); runn(wolf); } } | cs |
'안드로이드(android)' 카테고리의 다른 글
자바 이클립스 클래스 이름 변경하기 (0) | 2015.09.16 |
---|---|
이클립스(Ecplise) 프로젝트(project) 불러오기 (0) | 2015.09.16 |
자바 자료형 변환 총정리 (0) | 2015.09.07 |
자바 형변환(String 을 int 로)Integer.parseInt() (0) | 2015.09.05 |
이클립스 콘솔창 글자크기 변경하기 (0) | 2015.09.05 |
댓글