728x90
반응형
[ Review ]
Polymorphism 다형성이란?
: 하나의 메시지 방식으로, 다양한 객체들이 각자의 방식으로 동작하는 성질
"One Interface, Multiple Implement"
⇒ 하나의 메세지 방식으로 여러 개의 기능을 구현할 수 있다.
Interface : 소통방식 (메시지 방식/메서드 명)
Implement : 구현부 (기능)
실생활 적용 사례 )
사용자에 따라 차를 고를 때, 같은 차를 고르더라도, 각자의 용도에 맞게 메서드(기능)을 최적화하여 사용할 수 있다.
코드 예제 )
> 위자식 객체를 생성한 후 반환되는 주소값을 부모타입 변수에 저장하는 코드
즉, 부모타입의 변수에 자식 객체를 참조할 수 있다.
Animal a = new Person();
> 특정 메서드 호출 시, 인자값(객체 주소값)을 자식객체 주소값으로 전달하고,
처리 메서드에서는 매개변수를 부모 타입의 변수로 할당받아 처리할 수 있다.
rv.pass(new Person());
// rv : refenece variable 참조변수
public void pass(Animal a) {}
[ Polymorphism Array 배열 다형성]
사용 예제 1
class Car{}
class Animal{}
class Person extends Animal{}
public class TestPolymorphismArray1 {
public static void main(String[] args) {
Animal []a = new Animal[3];
//원칙적으로 배열은 선언한 데이터타입의 정보만 담는다.
a[0] = new Animal();
// 부모타입의 배열에 자식객체를 담을 수 있다(다형성이 지원되므로)
a[1] = new Person();
//a[2] = new Car(); //error: Car는 Animal과 상속관계가 아니므로 담을 수 없다.
}
}
사용 예제 2
import step2.review.*;
public class TestPolymorphismArray3 {
public static void main(String[] args) {
Animal arr[] = { new Tiger(), new Monkey(), new Person() };
ZooService2 service = new ZooService2();
service.executeAll(arr);
/*
* 호랑이가 사냥하며 놀다
* 원숭이가 나무타며 놀다
* 티켓팅하다
* 사람이 데이트하며 놀다
*/
}
}
import step2.review.*;
public class ZooService2 {
public void executeAll(Animal[] ani) {
for (int i=0; i<ani.length; i++) {
if (ani[i] instanceof Person)
((Person) ani[i]).ticketting();
ani[i].play();
}
}
}
728x90
반응형
'JAVA SE > 이론 및 개념' 카테고리의 다른 글
[20.07.24/Day_12] Java SE / Interface 인터페이스 (2) | 2020.07.24 |
---|---|
[20.07.23/Day_11] Java SE / Static, Final, Abstract 추상클래스, 추상메서드 (2) | 2020.07.23 |
[20.07.20/Day_09] Java SE / Polymorphism 다형성, Object down casting 다운캐스팅, instance of 연산자 (0) | 2020.07.20 |
[20.07.17/Day_08] Java SE / Inheritance 상속 (0) | 2020.07.16 |
[20.07.16/Day_07] Java SE / String API, Overloading (0) | 2020.07.16 |