JAVA Programming
[36] 다형성 (Polymorphism) 이란 ?
꾸준히개발하자
2020. 7. 15. 13:32
다형성 이란?
하나의 코드가 여러 자료형으로 구현되어 실행되는 것
같은 코드에서 여러 실행 결과가 나온다.
정보은닉 , 상속 과 더불어 객체지향 프로그래밍의 가장 큰 특징 중 하나이다
객체지향 프로그래밍의 유연성 , 재활용성 , 유지보수성에 기본이 되는 특징이다.
package polymorphism;
class Animal{
public void move() {
System.out.println("동물이 움직입니다.");
}
}
class Human extends Animal {
@Override // 오버라이딩
public void move() {
System.out.println("사람이 두발로 걷습니다.");
}
}
class Tiger extends Animal {
@Override
public void move() {
System.out.println("호랑이가 네 발로 뜁니다.");
}
}
class Eagle extends Animal {
@Override
public void move() {
System.out.println("독수리가 하늘을 날아갑니다.");
}
}
public class AnimalTest {
public static void main(String[] args) {
// Animal 타입 하나만으로 각각 돌아갈 메소드들을 동일한 메소드로 호출할수있다.
Animal hAnimal = new Human();
Animal tAnimal = new Tiger();
Animal eAnimal = new Eagle();
AnimalTest test = new AnimalTest();
test.moveAnimal(hAnimal);
test.moveAnimal(tAnimal);
test.moveAnimal(eAnimal);
}
public void moveAnimal(Animal animal) { // 매개변수타입은 hAnimal tAnimal eAnimal 모두 Animal 타입이기때문에 Animal 로 타입을 정해주면 된다.
animal.move(); // 이게 바로 다형성 : 하나의 코드가 여러 자료형의 구현이 되서 다른실행이 이루어진다.
}
public void moveAnimal(Human animal) {
// 오버로딩 같은메소드인데 매개변수타입을 다르게 하면 이걸 세개를 만들어야된다. 다형성의 장점이다.
animal.move();
}
}
하위클래스에서 상위클래스로 업캐스팅 한후 모두 Animal 타입이기때문에
move() 메소드를 호출하기위한 메소드 moveAnimal 매개변수를 Animal animal 로 줬다.
animal.move() 함수를 실행함으로써 하나의 코드가 여러 자료형으로 구현이 되서 다른실행이 이루어진다
이게 바로 다형성이다. 즉 Animal 타입 하나만으로 각각 돌아갈 메소드들을 동일한 메소드로 호출할수있다.