다형성(?)에대해 질문드립니다.
215
投稿した質問数 26
public class Polymorphism {
public static void main(String[] args) {
// 성기사 객체 생성
HolyKnight uther = new HolyKnight("우서", 180);
// 탱커로서의 역할 수행
Tanker t = uther;
t.increaseHp();
// 힐러로서의 역할 수행
Healer h = uther;
h.heal();
uther.increaseHp();
uther.heal();
}
}
인터페이스인 Healer와 Tanker를 상속받는 HolyKnight클래스가 있습니다.
HolyKnights가 상속을 받고 그 클래스에서 재정의를 하기에 동작의 실질적 형태는 HolyKnight가 갖고있게 되는건데 굳이 탱크,힐러의 인터페이스 객체 h와 t를 만들어서 그것을 가르켜서 HolyKnights 의 재정의된 메소드를 실행시킬 이유가 있을까요??
원랜 메서드를 재정의한 클래스의 객체하나만 선언해서 그 객체를 참조해 재정의된 interface들을 실행 시킬 수 있었는데 각 인터페이스마다 객체를 만들면 동작은 똑같은데 코드만 늘어나는 경우인게 아닌가 해서 질문드립니다.
(HolyKnights 참조변수는 탱크와 힐러의 인터페이스에 접근가능 하지만
힐러와 탱크인터페이스의 참조변수를 만들어 실행시키면 힐러는 탱크를 탱크는 힐러의
메서드를 사용할 수 없는 장점?때문일까요??)
回答 1
2
제시된 코드만 보았을 때는
인터페이스를 나누는 것이
낭비로 느껴질 수 있습니다. 👍
인터페이스는
프로젝트의 규모가 커질 수록
효율성이 증가하기 때문인데요.
그래서 지금은,
인터페이스의 개념과 사용법은 이렇다 정도로
정리하시고
앞으로 더 배우게될 고급 스킬들,
(ex: 스프링 프레임워크, 디자인 패턴, 소프트웨어 아키텍처 등)
이를 위한
기초 체력훈련이다 생각하면 좋을 것 같습니다
PS.
연극으로 비유하자면,
인터페이스는 연극의 특정 역할과 같습니다.
서로 다른 배우 A, B, C가
해당 역할(interface)을 훈련(implements)했다면
상황에 따라 배우를 다변화 할 수 있는
유연성(flexiablity)을 가지게 됩니다.
또 다른 예로 USB를 들수 있는데요.
카메라, 핸드폰, 태플릿 PC 등 다양한 기기(object)들이
공통된 USB(interface)를 채택(implements)하기에
하나의 USB포트로 다양한 기기와 소통할 수 있죠.
인터페이스는
이러한 유연성과 다형성을
가능하게 합니다.
객체지향 Java 파트2 붕어빵 문제 질문 있습니다.
0
140
2
11장 연습문제 6번
0
156
3
출력값이 다르다고 나오네요!
0
321
1
연습문제 이클립스에서는 되는데요
0
265
1
객체 배열과 반복문 강의 중
0
382
2
클래스 실행 순서가 궁금합니다.
0
662
2
자바api주사위통계 예제2번 질문있습니다
0
314
1
자바를 부탁해 질문
0
675
1
질문있습니다.
0
329
1
강의 정리 내용
0
332
1
유튜버 강의와 차이점 문의드립니다.
0
318
1
홍팍님 교재 문의
0
295
1
외부로부터 감추기 문제 질문
0
235
1
클래스가 다른데 메소드를 어떻게 가져오는건가요?
0
240
1
객체 생성할 때 매개변수에 new연산자는 왜 붙인건가요?
0
307
1
안녕하세요. 생성자관련?하여 질문드립니다.
0
206
1
홍팍쌤 안녕하세요
0
217
1
생성자
0
279
1
Object최상위 클래스에
0
209
1
질문있습니다.
0
166
1
질문있습니다.
0
152
1
void 질문있습니다.
0
178
1
return에 대해 질문있습니다
0
210
1
생성자를 만들어야 하는 이유
0
245
1

