SEOKIHOUSE 2023. 3. 13. 16:48

다형성: 하나의 메소드 or 클래스가 있을 때 다양한 방법으로 동작하는 것

1) overloading


2)

첫번쨰 예제를 살펴보자 B로 객체를 만드는데 데이터 타입이 A인 경우

 


그렇다면 오버라이딩 했을 땐 뭐가 실행될까?? === B에 있는 x가 실행됐다!


조금더 예시를 변경해보자

즉 클래스 A의 행세를 해서 A에 있는 메소드만 실행가능한데 B에 있는 메소드가 상위(A) 메소드를 오버라이딩 하면 그것을 실행한당


*****다른 예시

3) 기존에 짜던 방식으로 코딩을 했을 경우


새로운 방식으로 했을 때(다형성을 이용해보자)

c1과 c2 모두 Calculator라는 데이터 형식이지만 실제로 동작했을 때 run실행 했을 때 sun과 avg구체적 구현(+와 -)은 다르다

결과값

+ sum :30

+ avg :15

- sum :30

- avg :15


근데 여기서 또 변경이 가능하다!!

-------> "실행결과"라는 값을 추가해서 출력해주고 싶을 떄


뭔가 넣기는 했지만 중복을 제거 할 수 없을까?

run부분을 아래서 다시 새로 만들어서 c1과 c2를 넣어서 실행


!!!but 만약에 기존 방식으로 했었다면 어떻게 되었을까?!!!!

--> 다형성을 이용하지 않고 하니까 중복되는 로직이 꽤 많아진다!


4)인터페이스와 다형성

모든 기능을 쓰려면 D처럼 하겠지만 특정한 인터페이스의 기능만 사용한다면 데이터형식을 I2이렇게 지정하면 댄당

ex) 휴대폰(클래스)을 엄니한테 전화기라고 말한다면 ----> 전화기의 용도로만 쓴다(인터페이스 용도)

" 꼬맹이한테 게임기라고 한다면? ---> 게임기로 쓴다(인터페이스 용도)