이틀동안 깃허브 블로그한테 탈탈 털렸더니 머리에 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가 꺼짐
공부할 때 도움 많이 된 블로그!!
**인프런 강의 'Java TPC(생각하고, 표현하고, 코딩하고 / 박매일 강사님)'를 듣고 작성 및 발췌 했습니다.
'Java' 카테고리의 다른 글
[JAVA/자바]변수와 메서드 (0) | 2022.12.11 |
---|---|
[JAVA/자바]Variable, DataType, Assign (0) | 2022.12.11 |
[JAVA/자바]JAVA SE/JDK/JRE/JDK 및 IDE 차이점 -스크랩 (0) | 2022.12.10 |
[JAVA/자바]Upcasting/업캐스팅, Downcasting/다운캐스팅 (0) | 2022.12.08 |
[JAVA/자바]추상클래스와 인터페이스 (0) | 2022.12.07 |