Cracking Code

[Java] 다형성 (Polymorphism) 본문

Java/Java language

[Java] 다형성 (Polymorphism)

CrackCo 2020. 8. 25. 19:29
다형성이란 하나의 참조 변수가 다른 데이터형을 참조할 수 있는 능력입니다.

다형성

상속 관계에 있으면 다형성을 적용할 수 있고 형변환도 할 수 있습니다.

기본적으로 큰 타입이 작은 타입을 가리키는 구조입니다.

 

E.g.

public class Main {
    public static void main(String[] args) {
        Object[] objects = {"홍길동", new Man(), new Emp()};

        for (Object o : objects) {
            if (o instanceof String) {
                System.out.println(o);
            }
        }
    }
}


// 실행 결과
홍길동

Object 는 자바의 최상위 클래스로 모든 클래스는 Object를 상속받아 정의됩니다.

그러므로 String 객체, Man 객체, Emp 객체를 다형성을 적용하여 가리킬 수 있기 때문에

Object 객체 배열 안에 다른 하위 클래스의 객체들을 저장할 수 있게 됩니다.

 

public class Main {
    public static void main(String[] args) {
        Object[] objects = {"홍길동", new Man(), new Emp()};

        // Man man = objects[1]; // 오류 발생
        // 부모 클래스에서 자식 클래스 타입으로 타입 변환은 반드시 명시해야 함
        Man man = (Man) objects[1];
        System.out.println(man);
    }
}

// 실행 결과
Man[name=null, age=0]

부모 클래스 타입으로 자식 클래스 타입을 가리킬 때는 형변환을 생략할 수 있지만

Object 클래스 타입으로 가리키고 있는 Man 객체Man 클래스 타입으로 형변환 없이 가리킬 수 없기 때문에

명시적으로 형변환을 해주어야 합니다.

'Java > Java language' 카테고리의 다른 글

[Java] 인터페이스 (Interface)  (0) 2020.08.27
[Java] 추상 클래스 (Abstract class)  (0) 2020.08.25
[Java] 메서드 오버라이딩 (Method Overriding)  (0) 2020.08.13
[Java] 상속 (Inheritance)  (0) 2020.08.12
[Java] this 키워드  (0) 2020.08.09
Comments