inflearn logo
강의

講義

知識共有

絵で学ぶJava、パート2:オブジェクト指向!

インターフェースと多型

다형성(?)에대해 질문드립니다.

215

ska2485

投稿した質問数 26

0

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 참조변수는 탱크와 힐러의 인터페이스에 접근가능 하지만

힐러와 탱크인터페이스의 참조변수를 만들어 실행시키면 힐러는 탱크를 탱크는 힐러의 

메서드를 사용할 수 없는 장점?때문일까요??)

 

 

 

java oop

回答 1

2

hongpark

제시된 코드만 보았을 때는
인터페이스를 나누는 것이
낭비로 느껴질 수 있습니다. 👍

인터페이스는
프로젝트의 규모가 커질 수록
효율성이 증가하기 때문인데요.

그래서 지금은,
인터페이스의 개념과 사용법은 이렇다 정도로
정리하시고

앞으로 더 배우게될 고급 스킬들,
(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