티스토리 뷰

다형성과 형변환

다형성

 - 하나의 객체가 다양한 형상이나 다양한 기능을 가진다는 뜻

   하나의 클래스에서 오버로딩된 메소드들은 유사하지만 조금씩 다른 기능을 수행함
  * 자식 클래스에서 재정의된 메소드는 부모 유사하지만 다른 기능을 수행함


형 변환

- 상속 관계에 있는 클래스 간에는 타입 변환이 가능함

  * 전혀 다른 두 클래스 간에는 타입 변환이 금지됨
 - 하위 클래스에서 상위 클래스로의 형 변환은 문제없음
  * 상위 유형의 변수는 하위 객체의 참조값을 가질 수 있음



다형성과 오버라이딩

클래스의 다형성

 - 부모 클래스로부터 상속받은 메소드를 자식 클래스에서 오버라이딩할 수 있음

 - 부모와 자식에서 같은 이름의 메소드가 다른 기능을 수행

  * 같은 이름과 매개 변수 및 반환형을 가지나 몸체가 다름


인터페이스의 다형성

 - 자식 클래스들에서 상위 인터페이스의 메소드를 다르게 구현함



클래스 상속과 다형성

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
class A {
    public void func() {
        System.out.println(“a”);
    }
}
 
class B extends A {
    public void func() {
        System.out.println(“b”);
    }
}
 
class C extends B {
    public void func() {
        System.out.println(“c”);
    }
}
 
public class PolymorphTest {
    public static void main(String args[]) {
        A a = new B();
        a.func();
        a = new C();
        a.func();
    }
}
cs


b

c

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
class Employee{
    int nSalary;
    String szDept = null;
 
    public void doJob() {
        System.out.println("Do something");
    }
}
 
class Sales extends Employee{
    public Sales() {
        szDept = "Sales Dept";
    }
 
    public void doJob(){
        System.out.println("Do sales");
    }
}
 
class Development extends Employee{
    public Development() {
        szDept = "Sales Dept";
    }
 
    public void doJob() {
        System.out.println("Do development");
    }
}
 
public class Company1 {
    public static void main(String args[]) {
        Employee emp1, emp2;
        emp1 = new Sales();
        emp2 = new Development();
        emp1.doJob();
        emp2.doJob();
    }
}
cs



Do sales

Do development



공지사항
최근에 올라온 글
Total
Today
Yesterday