티스토리 뷰

안드로이드(android)

자바 다형성

세상모든방법 2015. 9. 10. 21:42

우선 다형성이 어떤것인지 알아보기 전에 소스먼저 보겠습니다,

부모 자식 두 클래스에 같은 이름에 메쏘드가 있는경우 결과는 자식 클래스의 메쏘드가 실행됨을 알 수 있습니다.





부모나 자식 둘중 하나만 메쏘드를 가지고 있는 경우에대해서 보겠습니다.

부모만 메쏘드를 가지고 있는 경우에는 실행이 잘 됩니다.




반대로 하게되면 오류가 발생합니다.

즉 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








댓글
공지사항
최근에 달린 댓글
Total
Today
Yesterday
«   2024/10   »
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