다형성



  • 다형성
  • 다형성 활용


1. 다형성이란?


다형성이란 같은 자료형에 여러가지 객체를 대입하여 다양한 결과를 얻는것을 말한다 즉, 하나의 자료형(타입)으로 여려 결과를 얻어낼 수 있고 이는 “객체의 부품화”를 만들 수 있다 상속,인터페이스 구현,업캐스팅,오버라이딩을 통해 다형성을 구현한다

import java.util.Scanner;

interface OverWatch { // 인터페이스  => 인터페이스의 모든 메서드는 abstract => 반드시 오버라이딩(재정의)
	void name(); // 추상 메소드
	void lClick(); // 추상 메소드
	void rClick(); // 추상 메소드
	void shiftButton(); // 추상 메소드
	void eButton(); // 추상 메소드
	void qButton(); // 추상 메소드
}

class Mei implements OverWatch { // 인터페이스 구현 클래스
	public void name() { // 오버라이딩
		System.out.println("이름 : 메이");
	}
	public void lClick() { // 오버라이딩
		System.out.println("좌클릭 : 냉각총");
	}
	public void rClick() { // 오버라이딩
		System.out.println("우클릭 : 고드름 투사체");
	}
	public void shiftButton() { // 오버라이딩
		System.out.println("shift : 급속 빙결");
	}
	public void eButton() { // 오버라이딩
		System.out.println("e : 빙벽");
	}
	public void qButton() { // 오버라이딩
		System.out.println("q : 눈보라(궁극기)");
	}
}

class Reaper implements OverWatch { // 인터페이스 구현 클래스
	public void name() { // 오버라이딩
		System.out.println("이름 : 리퍼");
	}
	public void lClick() { // 오버라이딩
		System.out.println("좌클릭 : 헬파이어 샷건");
	}
	public void rClick() { // 오버라이딩
		System.out.println("우클릭 : 없음");
	}
	public void shiftButton() { // 오버라이딩
		System.out.println("shift : 망령화");
	}
	public void eButton() { // 오버라이딩
		System.out.println("e : 그림자 밟기");
	}
	public void qButton() { // 오버라이딩
		System.out.println("q : 죽음의 꽃(궁극기)");
	}
}

class Mccree implements OverWatch { // 인터페이스 구현 클래스
	public void name() { // 오버라이딩
		System.out.println("이름 : 맥크리");
	}
	public void lClick() { // 오버라이딩
		System.out.println("좌클릭 : 피스키퍼");
	}
	public void rClick() { // 오버라이딩
		System.out.println("우클릭 : 모든 총알 발사");
	}
	public void shiftButton() { // 오버라이딩
		System.out.println("shift : 구르기");
	}
	public void eButton() { // 오버라이딩
		System.out.println("e : 섬광탄");
	}
	public void qButton() { // 오버라이딩
		System.out.println("q : 황야의 무법자(궁극기)");
	}
}

public class PolymorphismEx01 {
	public static void main(String[] args) { // main 메소드
		OverWatch ow; // 인터페이스 객체 선언
		System.out.println("플레이할 캐릭터 번호 선택(1. 메이, 2. 리퍼, 3. 맥크리)");
		Scanner sc = new Scanner(System.in); // 스캐너 객체
		int n = sc.nextInt();
		if(n==1){
			ow = new Mei(); // 업캐스팅
		}else if(n==2){
			ow = new Reaper(); // 업캐스팅
		}else{
			ow = new Mccree(); // 업캐스팅
		}
// 선택한 조건에 따라서 부모 객체로 자식 메소드 사용(하나의 타입으로 다양한 결과를 얻어냄 / 다형성)
		ow.name();
		ow.lClick();
		ow.rClick();
		ow.shiftButton();
		ow.eButton();
		ow.qButton();
	}
}

// [출처] [JAVA/자바] 다형성(polymorphism)의 개념/의미/예제|작성자 JOKER