Post

다형성

다형성

다형성은 조상 타입 참조변수가 자식 객체를 다룰 수 있게 한다. 이를 통해 사용할 수 있는 멤버 갯수를 조절한다.

조상 클래스가 5개의 멤버를 가지고 자식 클래스가 7개(상속받은 멤버 5개 + 자신의 멤버 2개)를 가진다면,
조상타입의 참조변수를 자식 객체를 참조하면 멤버 5개를 사용할 수 있다. 그러나, 자식타입의 참조 변수가 조상 객체를 참조하면 7개의 멤버가 필요한데 조상 객체는 5개만 있으니 이는 불가능하다.
5개 기능의 리모콘(조상타입 참조변수) = 7개 기능 물건(자식 객체)(가능)
7개 기능의 리모콘(자식타입 참조변수) != 5개 기능 물건(조상 객체)(불가능)

객체의 멤버갯수(기능)가 항상 참조변수의 타입 멤버갯수(리모콘의 버튼 수)보다 같거나 많아야한다.

참조변수의 형변환

참조변수가 가르키는 인스턴스의 타입의 종류가 중요하다.상속 관계의 타입간에만 형변환이 가능하다.

형변환 순서
  1. instanceof 연산자로 형변환이 가능한지 확인
  2. 형변환

매개변수의 다형성

참조형 매개변수는 자신과 같거나 자손타입의 객체를 넘겨준다.이를 통해 오버로딩해야할 메소드의 수를 줄여준다.

1
2
3
4
5
6
7
8
9
10
11
12
Class A{}
Class B extends A{}
Class C extends A{} // 클래스 간의 관계 표시

// 매개변수의 다형성이 없는 경우
// 매개변수 타입을 바꾸는 오버로딩 많이 해야함
void method(A a){}
void method(B b){}
void method(C c){} 

// 매개변수의 다형성이 있는 경우
void method(A a){} //A,B,C모두 사용 가능

하나의 배열에 여러 객체 넣기

조상 타입의 배열 안에 자손 타입의 여러 객체를 넣을 수 있다.

1
2
3
A[] arr = new A[2];
A[0] = new B();
A[1] = new C(); 
This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.