본문으로 바로가기

Java - 다형성

category 프로그래밍 언어/Java 2019. 7. 10. 19:15

 

1. 다형성

다형성은 같은 자료형에 여러 객체를 대입해서 다양하게 활용하는 것을 뜻합니다.

이를 통해 다양한 실행 결과를 얻을 수 있으며 유지보수가 용이하게 됩니다.

 


2. 다형성 구현 방법

클래스를 상속하거나 인터페이스를 구현하여 오버라이딩을 하고 자식클래스를 부모로 업 캐스팅을 하면 됩니다.

 

부모 타입의 객체에서 자식 클래스 맴버를 참조하여 다형성을 구현합니다.

 

현대자동차 인터페이스에 구현하는 각 자동차들에 서로 다른 성능을 발휘하는 것을 다형성이라고 합니다.

 

interface Hyundai { // 인터페이스
	void name(); // 추상 메소드
	void engine(); // 추상 메소드
}

class Ssonata implements Hyundai { // 인터페이스 구현 클래스
	public void name() { // 오버라이딩
		System.out.println("이름 : 쏘나타");
	}
    public void engine(){
    	System.out.println("엔진 : 쏘나타엔진");

}

class Abanddae implements Hyundai { // 인터페이스 구현 클래스
	public void name() { // 오버라이딩
		System.out.println("이름 :아반뗴");
	}
	public void engine() { // 오버라이딩
		System.out.println("e : 아반뗴 엔진");
	}
	
}

public class PolymorphismEx01 {
	public static void main(String[] args) { // main 메소드
		Hyundai ow; // 인터페이스 객체 선언
		System.out.println("플레이할 자동차 번호 선택(1.쏘나타, 2. 아반떼)");
		Scanner sc = new Scanner(System.in); // 스캐너 객체
		int n = sc.nextInt();
		if(n==1){
			ow = new Ssonata(); // 업캐스팅
		}else if(n==2){
			ow = new abanddae(); // 업캐스팅
		}
// 선택한 조건에 따라서 부모 객체로 자식 메소드 사용(하나의 타입으로 다양한 결과를 얻어냄 / 다형성)
		ow.name();
		ow.engine();
	}
}

이렇게 다형성으로 업캐스팅하여 사용할 수 있습니다.

 

즉 Hyndai 인터페이스를 선언하고 이를 위 클래스들로 업캐스팅을 해줍니다.

 

'프로그래밍 언어 > Java' 카테고리의 다른 글

Java- 인터페이스  (0) 2019.07.11
Java- 추상클래스  (0) 2019.07.10
Java - 제어자  (0) 2019.07.10
Java- 상속  (0) 2019.07.08
Java- 오버라이딩  (0) 2019.07.07