gwooden_코린이
java_다형성02_221129(7일차) 본문
728x90
package 다형성;
public class PolyEx2 {
Child p = new Parent();//이 경우 애초에 업캐스팅이 안되어 있어서 불가능
//범위가 더 넓은 쪽으로 올라가서 먼저 처리가 되어야 된다.
Parent p = new Child(); //업캐스팅
p.run();
//업캐스팅 돼었던건만 다운 캐스팅이 된다.
(double)a
Child c =(Child)p; //다운 캐스팅
c.eat();
}
package 다형성02;
//매번 새로운 객체를 만들때 마다 기존 객체가 쓸모가 없어지지만, 기존 객체는 남겨둬야 될 때
//체계적으로 관리하기 위해 다형성을 사용
public class Computer {
public static void main(String[] args) {
GraphicCard gc = new GraphicCard();
gc.process(); //gc 라는 메서드 호출 여기서 gc는 GraphicCard 클래스를 불러온다.
//출력은 그래픽카드 처리 문자열이 출력
gc = new Amd(); //gc 메서드를 Amd로 형변환
gc.process(); //출력시 Amd 그래픽 처리로 문자열 출력
gc = new Nvidia(); //gc 메서드를 Nvidia로 형변환
gc.process(); //출력시 Nvidia 그래픽 처리로 문자열 출력
}
}
package 다형성02;
public class Nvidia extends GraphicCard {
public void process() {
System.out.println("Nvidia 그래픽 처리");
}
}
package 다형성02;
public class Amd extends GraphicCard {
public void process() {
System.out.println("AMD 그래픽 처리");
}
}
package 다형성02;
public class GraphicCard {
int memory;
public void process() {
System.out.println("그래픽 처리");
}
}
package 다형성03;
public class Game {
public static void main(String[] args) {
Player p = new Player();
p.attack(); //현재 플레이어는 별다른 직업이 없는 상태 (기본형태)
p = new Mage();
p.attack();
p = new Knight();
p.attack();
}
}
기본 공격을 합니다 마법사가 기본 공격을 합니다 기사가 기본 공격을 합니다 |
package 다형성03;
public class Mage extends Player{
public void attack() {
System.out.println("마법사가 기본 공격을 합니다");
}
}
package 다형성03;
public class Knight extends Player {
public void attack() {
System.out.println("기사가 기본 공격을 합니다");
}
}
package 다형성03;
public class Player {
int hp;
public void attack() {
System.out.println("기본 공격을 합니다");
}
}
728x90
'java > 7일차' 카테고리의 다른 글
java_상속+오버라이딩_221129(7일차) (0) | 2022.11.29 |
---|---|
java_final_221129(7일차) (0) | 2022.11.29 |
java_객체지향 추상_221129(7일차) (0) | 2022.11.29 |
java_tv만들기_221129(7일차) (0) | 2022.11.29 |
java_다형성03_221129(7일차) (0) | 2022.11.29 |
Comments