[Java] 12.2.2. 추상화 & 다형성 - 상속에서 메서드 찾기

김주희's avatar
Feb 26, 2025
[Java] 12.2.2. 추상화 & 다형성 - 상속에서 메서드 찾기
package ex05.ch02; class Car { // 다형성을 만족하면 is 성립 (<-> has는 나중에) void run() { System.out.println("자동차 달린다"); } } class Morning extends Car { void run() { System.out.println("모닝 달린다"); } } class Sonata extends Car { void run() { System.out.println("소나타 달린다"); } } public class ExMeh01 { public static void main(String[] args) { Morning a1 = new Morning(); // [Morning(run), Car(run)] a1.run(); Car a2 = new Morning(); // [Morning(run), Car(run)] a2.run(); Car a3 = new Sonata(); a3.run(); } }
package ex05.ch02; class 운동선수 { // getter public int getHp() { return 1; } // setter public void setHp(int hp) { } } class 타이슨 extends 운동선수 { int hp = 100; public int getHp() { // 재정의 return hp; } // context (문맥) public void setHp(int hp) { this.hp = hp; } } class 맥그리너 extends 운동선수 { int hp = 100; public int getHp() { return hp; } public void setHp(int hp) { this.hp = hp; } } public class ExMeh02 { static void attack(맥그리너 u1) { // 구체적인 것에 의존 u1.hp = u1.hp - 10; } static void attack(타이슨 u1) { // 구체적인 것에 의존 u1.hp = u1.hp - 10; } static void attack(운동선수 u1) { // 추상적인 것에 의존 //u1.hp // 이걸 해결하는 방법 = override //System.out.println(u1.getHp()); // 뭐가 new로 들어왔는지에 따라 맥그리너거나 타이슨의 hp u1.setHp(u1.getHp() - 10); } public static void main(String[] args) { /* 맥그리너 u1 = new 맥그리너(); attack(u1); System.out.println(u1.hp); 타이슨 u2 = new 타이슨(); attack(u2); System.out.println(u2.hp); */ 운동선수 u3 = new 타이슨(); attack(u3); attack(u3); attack(u3); System.out.println(u3.getHp()); } }
notion image
 
Share article

jay0628