inflearn logo
강의

講義

知識共有

Javaプログラミング入門講座(renew ver.) - 初心者から開発者就職まで!!

インターフェース

인터페이스를 사용 하는 이유가 무엇인가요?..

解決済みの質問

737

jason

投稿した質問数 74

0

잘 이해하지 못하였지만
부모 클래스를 상속 받아서 사용하면 굳이 인터페이스 클래스가 필요 없을거라 생각이 드는데 인터페이스의 실무에서 메리트는 무엇인가요?
인터페이스 클래스를 은닉 후 메인클래스에서 원하는 인터페이스의 펑션만 호출 할 수 있는것인가요?
코딩 고수님들 혹시 지나가시다가 이 걸 보게 된다면 쉽게 설명해 주실 수 있나요 ㅠ

java

回答 1

8

siscoftimer4979

늦었지만 댓글 달아 봐요.

interface 는 설계의 개념으로 생각하시면 좋을 것 같습니다.

 

1. 외부 시스템에게  api 공개

내 소스가 아닌 외부 시스템에게 api 공개가 필요한 경우 interface class를 사용할 수 있습니다.

나머지는 internal, private, protected 등으로 숨기고 외부 공개하는 api 만 interface class 로 만들어서 사용하도록 하는 방법입니다.

 

2. 특성 마다 작은 interface로 설계

interface 가 class 와 다른점은 다중 상속이 가능하다는 점입니다.

 

아래 예를 참고해 보시면 도움이 될 것 같습니다.

 

[탈것]은 탄다, 내린다, 전진한다, 멈춘다 는 동작이 있습니다.

[탈것] 은 [자동차], [자전거], [오토바이]가 포함됩니다.

[자동차] 와 [오토바이] 는 시동을 건다 는 동작이 있지만 [자전거] 는 시동을 걸지 않아도 되지요.

 

[자동차] 는 탄다 는 동작을 위해 문을 연다, 문을 닫는다 는 동작이 추가로 필요합니다.

하지만 [자전거] 와 [오토바이] 는 [안장에 앉는다] 는 동작만 필요합니다,

 

이걸 소스로 표현하면 아래와 같을 것 같습니다.

 

interface 탈것 {

  void 탄다();

  void 내린다();

  void 전진한다();

  void 멈춘다();

}

interface 시동 {

  void 시동을 건다();

}

interface 안장 {

  void 안장에 앉는다();

}

interface 문 {

  void 문을연다();

  void 문을닫는다();

}

 

abstract class 자동차 implements 탈것, 시동, 문 {

}

abstract class 오토바이 implements 탈것, 시동, 안장 {

}

abstract class 자전거 implements 탈것, 안장 {

}

 

abstract class BMW자동차 extends 자동차 {

}

abstract class BMW오토바이 extends 오토바이 {

}

abstract class BMW자전거 extends 자전거 {

}

서식 문자 실습 중 콘솔 결과값 글자 깨짐

0

556

1

19-4 : super 클래스 부분에서

0

378

1

비트를 뒤에서부터 읽으셔서 궁금해서 질문드립니다!

1

650

1

배열예제 오류

0

389

1

GC 동작시기가 궁금합니다.

0

374

0

자바 18버전으로 다운받아도 되나요?

0

533

1

클래스 생성과 관련하여 질문 있습니다

0

265

0

형변환시 신규 메모리가 할당 되는지

0

349

0

Socket을 null로 처음에 선언해주는 이유가 뭘까요?

0

302

0

반환값 용도

0

338

1

블로그 작성

0

316

0

삼항연산자 잘못 적으셨어요

0

265

1

어느것부터 다운로드를 해야하는지 좀 막히네요

0

352

1

inputStream.read()질문드립니다

0

325

1

System.out.println("i + j = " + (i+j); 이렇게 쓰는 이유가 뭔가요? " "i + j " = (i +j)라고 쓸수 있는거 아닌가요?

0

367

1

<for문> 예시 작성시 에러발생 질문드립니다

0

577

2

이해가 안가는 부분이 있습니다.. 선생님들.. 도와주세요..!!

0

314

1

혹시 영상 만드시고 업로드 전 확인 안하시나요..? 잡음..

1

304

1

이해가 안가는게 있습니다

0

310

2

jdk-16.0.1은 jre가 없이 jdk만 설치되는게 정상인가요?

0

498

1

메모장을 실행하실때

0

313

1

강의 중 말씀해주신 형변환된 코드가 알고 싶어요.

0

231

2

메모장이안돼요 처음에

0

277

0

SE 16까지 나왔던데

0

282

0