본문 바로가기
Language/JAVA

[JAVA]다형성(Polymorphism)

by 바까 2020. 6. 23.
반응형

다형성이란 하나의 코드가 여러 자료형으로 구현되어 실행되는 것을 말한다.

다형성은 추상 클래스, 인터페이스에서 구현된다.

또한 안드로이드, 스프링 등 자바 기반의 프레임워크에서 응용할 수 있는 객체 지향 프로그램의 중요한 개념이다.

객체 지향 프로그래밍의 유연성, 재활용성, 유지보수성에 기본이 되는 특징을 가지고 있다. 

 

| 다형성 구현 방법

하나의 클래스를 상속받은 여러 클래스가 있는 경우 각 클래스 마다 같은 이름의 서로 다른 메서드를 정의한다.

상위 클래스 타입으로 선언된 하나의 변수가 여러 인스턴스에 대입되어 다양한 구현이 실행 될 수 있다.

 

| 다형성 예시


클래스 구현하기

/*다형성*/
/*[실습]예시로 그린 클래스 구현하기*/
package polymorphismTest;

//Animal 클래스 정의
class Animal{
	//메서드(멤버 함수) 정의
	public void move() {
		System.out.println("동물이 움직입니다.");
	}
}
//Human 클래스 정의
class Human extends Animal{
	
	//메서드(멤버함수) 정의
	public void move() {
		System.out.println("사람이 두발로 걷습니다.");
	}
}
//Tiger 클래스 정의
class Tiger extends Animal{
	
	//메서드(멤버함수) 정의
	@Override//자바는 써도되고 안써도됨
	public void move() {
		System.out.println("호랑이가 네발로 뜁니다.");
	}
}
//Eagle 클래스 정의
class Eagle extends Animal{
	
	//메서드(멤버함수) 정의
	public void move() {
		System.out.println("독수리가 하늘을 납니다.");
	}
}

public class AnimalTest {
	
	

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		AnimalTest aTest = new AnimalTest();
		
		//사람 객체를 생성하여 매개 변수로 전달합니다.
		aTest.moveAnimal(new Human()); 	//Animal animal = new Human();
		aTest.moveAnimal(new Tiger());	//Animal animal = new Tiger();
		aTest.moveAnimal(new Eagle());	//Animal animal = new Eagle();
		aTest.moveAnimal(new Animal());	//Animal animal = new Animal();
	}
	
	//움직이는 동작을 수행하는 메서드
	
	//Animal -> 매개변수의자료형이 상위클래스이다.
	public void moveAnimal(Animal animal){//같은파일안에 있어서 상속받지않아도 자료형으로 사용가능하다.
		//재정의된 메서드를 호출
		animal.move();
	}
}

 


 

반응형

댓글