[Java] Polymorphism (다형성)

SeongWon Oh·2021년 8월 15일
0

Java

목록 보기
16/39
post-thumbnail

Polymorphism (다형성)

  • 하나의 코드가 여러 자료형으로 구현되어 실행되는 능력을 의미하며 자바에서는 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 하며 구현을 한다.

  • 같은 코드에서 여러 다른 실행 결과가 나오게 할 수 있으며 다형성을 잘 활용하면 유연하고 확장성있고, 유지보수가 편리한 프로그램을 만들수 있다.

  • 정보은닉, 상속과 더불어 객체지향 프로그래밍의 가장 큰 특징 중 하나이다.


다형성을 사용하는 이유

  • 상속과 메서드 재정의를 활용하여 코딩을 하는 방법인 다형성을 사용하지 않는 경우 if-else if문이 많이 생성되어 코드의 유지보수가 어려워진다.

  • 그래서 상속과 메서드 재정의를 활용하여 확장성 있는 프로그램을 만들도록 해야한다.

  • 상위 클래스에서는 공통적인 부분을 제공하고 하위 클래스에서는 각 클래스에 맞는 기능을 구현을 한다.

  • 공통적인 부분을 제공하는 상위 클레스로 핸들링 할 수 있다.

👨🏻‍💻 Code

package ch06;

import java.util.ArrayList;

class Animal{
	public void move() {
		System.out.println("동물이 움직입니다");
	}
}

class Human extends Animal {
	
	@Override
	public void move() {
		System.out.println("사람이 두 발로 걷습니다.");
	}
	
	public void readBook() {
		System.out.println("사람이 책을 읽습니다.");
	}
}

class Tiger extends Animal {
	
	@Override
	public void move() {
		System.out.println("호랑이가 네 발로 걷습니다.");
	}
	
	public void hunting() {
		System.out.println("호랑이가 사냥을 합니다.");
	}
}

class Eagle extends Animal {
	
	@Override
	public void move() {
		System.out.println("독수리가 하늘을 날아 다닙니다.");
	}
	
	public void flying() {
		System.out.println("독수리가 날라다닙니다.");
	}
}



public class AnimalTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		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);
		
		ArrayList<Animal> animalList = new ArrayList<>();
		animalList.add(hAnimal);
		animalList.add(tAnimal);
		animalList.add(eAnimal);
		
		for (Animal ani: animalList) {
			ani.move();
		}
		
	}
	
	public void moveAnimal(Animal animal) {
		animal.move(); 
		// 코드는 한 줄인데 어떤 값이 들어가느냐에 따라 move의 수행이 달라진다.
		// 이게 다형성!!
	}

}



Reference

  • [Fast Campas] 한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online.
profile
블로그 이전했습니다. -> https://seongwon.dev/

0개의 댓글