다형성(多形性)

무삭이의 개발일지·2023년 4월 4일
0

다형성이란?

다형성에 대해 알아보자!! 다형성(Polymorphism)이란 한자 이름 그대로 어떤 객체의 속성이나 기능이 상황에 따라 여러 가지 형태를 가질 수 있는 성질을 의미한다.
이 말은 즉, 하나의 참조변수가 여러 타입의 객체를 참조할 수 있는 것을 의미한다.(상위클래스 객체를 사용하여 하위 클래스 객체들을 다룰 수 있다.)
🫡예를 들면, 포켓몬 클래스의 인스턴스에 포켓몬 클래스의 하위 클래스인 꼬부기 클래스, 이상해씨 클래스, 파이리 클래스의 객체를 대입할 수 있다는 소리..!!(당연히 해당 객체의 주소값을 참조)

🎯이렇게 참조 변수에 대입하게 된다면 포켓몬 클래스(상위 클래스)로 다양한 하위 클래스(꼬부기, 이상해씨, 파이리)객체를 관리할 수 있다. 하위클래스에서 메서드를 다시 정의할 필요 없이, 포켓몬 클래스에 정의된 메서드를 그대로 상속받아 사용할 수 있다.

여기서 말하는 같은 메서드들은 뭐 기본 기술인 '몸통 박치기' 등 모든 포켓몬이 가질 수 있는 기본 속성을 말한다. 이렇게 다형성을 통해 각자 다른 타입을 가지고 있지만, 같은 메서드를 호출해 코드의 재사용성과 유연성이 높일 수 있고, 코드를 보다 간결하고 가독성 높게 작성할 수 있다.

🍄하지만 포켓몬 클래스의 인스턴스에 하위 클래스 객체를 담았다고 하더라도, 이 인스턴스는 하위 클래스가 따로 정의한 메서드들을 사용하지 못한다. 왜냐하면 상위 클래스는 하위 클래스가 정의한 메서드들을 가지고 있지 않기 때문이다. 물론 Down Casting을 통해 메서드를 사용할 수 있다!!

profile
No. Try not. Do or Do not. There is no try.

0개의 댓글