본문 바로가기
Java

[JAVA/자바]다형성/Polymorphism

by hans-j 2022. 12. 10.

이틀동안 깃허브 블로그한테 탈탈 털렸더니 머리에 Git 외에는 아무것도 안 남은 것 같다..

죽겠어요...


아무튼...

다형성(Polymorphism)

상위 클래스가 하위 클래스에게 동일한 메세지를 보내는지만 다르게 동작하는 원리.

하나의 메세지에 자식들이 반응을 하지만!! 결과는 다른것! 


예제

package kr.poly;

public interface RemoCon { // 객체생성 불가능,RemoCon r=new RemoCon();이런거 불가능
	// final static (상수)를 사용가능
	public static final int MAXCH = 100; // RemoCon.MAXCH
	public static final int MINCH = 1;// RemoCon.MINCH
	// 추상메서드

	public void chUp();
	public void chDown();
	public void internet();
}

리모컨 (부모클래스)


package kr.poly;

public class TV implements RemoCon {
	int currCH = 70;
	@Override
	public void chUp() {
		if (currCH < RemoCon.MAXCH) {
			currCH++;
			System.out.println("TV의 채널이 올라간다.:" + currCH);
	}else

	{
		currCH = 1;
		System.out.println("TV의 채널이 올라간다." + currCH);
	}
	}
	@Override
	public void chDown() {
		if (currCH > RemoCon.MINCH) {
			currCH--;
		System.out.println("TV의 채널이 내려간다.");
		} else {
			currCH = 100;
			System.out.println("TV의 채널이 내려간다.");
		}
	}

	@Override
	public void internet() {
		// TODO Auto-generated method stub
		System.out.println("인터넷이 된다.");
	}
	// 추가적인 기능을 구현....
}

TV (자식)


package kr.poly;

public class Radio implements RemoCon {

	@Override
	public void chUp() {
		// TODO Auto-generated method stub
		System.out.println("Radio 채널이 올라간다.");
	}

	@Override
	public void chDown() {
		// TODO Auto-generated method stub
		System.out.println("Radio 채널이 내려간다.");
	}

	@Override
	public void internet() {
		// TODO Auto-generated method stub
		System.out.println("Radio는 인터넷이 지원되지 않는다.");
	}

}

Radio (자식)


import kr.poly.Radio;
import kr.poly.RemoCon;
import kr.poly.TV;

public class TPC26 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		RemoCon r = new TV();
		r.chUp();
		r.chDown();
		r.internet();

		r = new Radio();
		r.chUp();
		r.chDown();
		r.internet();
	}

}

메인클래스


 

출력결과

이렇게 ! 같은 변수로 호출을 해도 결과는 다르다!


간단히 말해서

리모컨 (부모 클래스) : 꺼져라!

전등스위치( 자식 클래스) : 네!  -------> 불이 꺼짐

TV (자식 클래스) :               네! -------->TV가 꺼짐


https://inpa.tistory.com/entry/OOP-JAVA%EC%9D%98-%EB%8B%A4%ED%98%95%EC%84%B1Polymorphism-%EC%99%84%EB%B2%BD-%EC%9D%B4%ED%95%B4

 

[OOP] 💠 자바의 다형성(Polymorphism) 완벽 이해하기

다형성 (Polymorphism) 다형성(多形性) 이란, 그 자체의 의미를 표준 국어사전에서 찾아보면, '같은 종의 생물이면서도 어떤 형태나 형질이 다양하게 나타나는 현상' 이라 정의되어 있다. 이를 프로

inpa.tistory.com

공부할 때 도움 많이 된 블로그!!


**인프런 강의 'Java TPC(생각하고, 표현하고, 코딩하고 / 박매일 강사님)'를 듣고 작성 및 발췌 했습니다.