객체지향 언어의 특징 중 하나인 다형성에 대해서 자세히 알아보기 위해서 이 글을 작성합니다.
하나의 객체가 많은 형(타입)을 가질 수 있는 성질입니다.
(상위 클래스가 동일한 메시지로 하위 클래스들을 서로 다르게 동작시키는 객체 지향 원리)
[예시]
장동건(자식) is a 로미오(부모)
원빈(자식) is a 로미오(부모)
Object[] objs = new Object[3];
objs[0] = "Chancehee"; // java.lang.String
objs[1] = objs; // [Ljava.lang.Object;
objs[2] = 1; // autoboxing: int -> java.lang.Integer
public void println(Object x) {
String s = String.valueOf(x);
synchronized (this) {
print(s);
newLine();
}
}
Fish fish = new Fish();
Object obj = fish;
큰 집(super) -> 작은 집(child) : 명시적 캐스팅Fish fish = new Shark();
// 형변환을 할 때에는 반드시 타입을 확인하고 하자!!
if (fish instanceof Shark) {
Shark shark = (Shark)fish;
}
다형성을 잘 활용하면 유연한 소프트웨어를 만들 수 있습니다.
하지만 올바르지 못한 사용은 코드의 가독성을 떨어 뜨리고, 디버깅의 어려움을 줄 수 있습니다.
따라서 개발자는 다형성을 확실히 이해하고 올바르게 적용한다면 좋은 객체 지향 설계가 가능할 것 입니다.📚🥳