자바 다형성

장원재·2024년 1월 8일
0

java

목록 보기
1/19

다형성이란 말 그대로 다양한 형태를 가지고 있음을 뜻합니다. 자바에서 가르키는 다형성이란 객체가 다양한 형태를 띌 수 있다 를 뜻합니다. 요고는 아래 예시를 통해 확인하면 쉽게 이해할 수 있습니다.

poly 라는 패키지 아래에 Parent, Child 클래스가 각각 존재하고, Child 클래스가 Parent 클래스 상속을 받았다고 가정해보겠습니다.

poly - Parent.java, Child.java, OverridingMain.java

package poly;

public class Parent {

    public String value = "parent";

    public void method() {
        System.out.println("Parent.method");
    }
}
  • 부모 클래스
package poly;

public class Child extends Parent{

    public String value = "child";

    @Override
    public void method() {
        System.out.println("Child.method");
    }
}
  • child 클래스
package poly;

public class OverridingMain {

    public static void main(String[] args) {

        Child child = new Child();
        System.out.println("child -> child");
        System.out.println("value = " + child.value);

        Parent parent = new Parent();
        System.out.println("parent -> parent");
        System.out.println("value = " + parent.value);

        // 부모 변수가 자식 인스턴스 참조 (다형적 참조)
        Parent poly = new Child();
        System.out.println("parent -> child");
        System.out.println("value = " + poly.value);
        poly.method();

    }
}
  • main 코드

  • 실행결과:
    child -> child
    value = child
    parent -> parent
    value = parent
    parent -> child
    value = parent
    Child.method

  • 여기서 Parent poly = new Child() 부분이 바로 다형성을 나타내는데, 부모 변수에 자식 인스턴스를 담은 것입니다. 즉, 부모 클래스가 부모 인스턴스를 생성하는 것 뿐만 아니라 다양한 자식들의 인스턴스를 함께 생성할 수 있습니다. 그림으로 살펴보면 아래와 같습니다.

    					<출처: 김영한 실전 자바 강의 교안>
  • 조금 더 구체적으로, 다형성은 부모라는 하나의 객체가 여러 자식들의 타입에 접근이 가능한 능력을 가르킵니다. (위의 예제에서는 paraent 인스턴스 뿐만 아니라 child 인스턴스도 함께 메모리에 생성)

  • 참고로 부모 변수는 자식 변수, 자식 변수의 자식 변수... 등에 접근 할 수 있지만, 반대로 자식 변수가 부모 변수에 접근할 수 없는 것을 유의 해야 합니다.

profile
데이터 분석에 관심있는 백앤드 개발자 지망생입니다

0개의 댓글

관련 채용 정보