다형성 (polymorphism)

Chaedie·2022년 5월 6일
0

JAVA

목록 보기
6/9
post-custom-banner

다형성 활용 방법

  1. 다형성 인수

Dog d = new Dog();
display(d);
Cat c = new Cat();
display(c);

public static void display(Animal r){
	r.eat();
}

// 1. 다형성 인수
서로 다른 Cat, Dog이라는 object를 param으로 넣고싶다.
다형성이 없다면, overload로 input type만 다르게 "코드의 중복"을 만들어야하는데,
클래스 상속을 통해 (다형성을 통해) 하나의 함수로 해결했다.
"중복의 제거"가 이루어진것이다.
// 나 혼자 생각
+ 회원 이라고 치면 멤버 클래스에 
일반멤버 클래스랑, 프리미엄 멤버 클래스랑 둘 다 있을것
이 때, 두 멤버가 공통으로 실행 가능한 메서드가 있을것이다.  
대신 멤버종류에 따라 다른 기능을 실행할수있다.

Leetcode로 따지면,
1) 
if (멤버타입 == 일반멤버 ) {
	basic.submit(basic);
}
if (멤버타입 == 프리미엄멤버 ) {
	preimium.submit(prem);
}
이런 식으로 함수 관리할수도 있는데, 

2)
overriding해서 
member.submit(member);
으로 콜 할수 있을것 같다.

애매한 부분이 있지만, 개념적으론 맞는것같다.
  1. 다형성 배열
Animal[] r = new Animal[2];
r[0] = new Dog();
r[1] = new Cat();

r[0].eat();
r[1].eat();

// 2. 다형성 배열
배열에 서로 다른 타입을 담지 못함
-> 부모 클래스 타입으로 배열 생성
-> 서로 다른 자식 클래스를 담을 수 있음
// 나 혼자 생각
위 예시 처럼 일반멤버, 프리미엄멤버 차이로 따지면,
데이터 관리할때 만약 배열로 담아서 넘긴다고 치면
멤버들을 다 던져줘야하는데
일반멤버만 따로 던지고, 
프리미엄만 따로 던지는 어이없는 짓을 하기 싫다.
그래서 부모 클래스인 멤버 타입으로 배열 만들어서 
각각 다른 타입인 일반멤버와 프리미엄멤버를 한 배열에 담아서 던질수 있다.

code 출처 : 박매일 - JAVA TPC

빨리 완강해서 chaedie () extends JAVA TPC{} 해야겠다.
super(); 한다구요~

profile
TIL Blog - Today's Intensive Learning!
post-custom-banner

0개의 댓글