티스토리 뷰
day15 190311
오늘은 실무에서도 굉장히 자주 쓰이는 문법인 '인터페이스(interface)'에 대해 배웠습니다.
--final클래스 : 부모클래스의 상속을 금지한다.
ex) publlic final class A // public class B extends A <<< X
--final메소드 : 재정의를 불가시킨다.
--default : 다른 패키지에서 접근불가
<인터페이스(Interface)> ( 상속과의 차이점 : 반드시 해당메소드를 가지고있으라는 조건을 부여함)
: 코드와 객체가 연결되는 접점 ( 공통된 점을 위한 설계 규약)
전체적인 필수 틀을 만들어주는 것
인터페이스는 다중상속이 가능하다.
목적 : 사용법이 동일한 객체를 만들기 위한 것.
*추상화 => 구현부담감소의 목적
인터페이스 => 사용방법이 같은 구현객체의 생성
첫번째 사진과 같이 클래스 구조를 짜고, 관계를 지어서 두번째사진과 같이 코딩으로 구현했습니다.
Camera, AutoDrivable 인터페이스를 Safeale에 상속시켜서 인터페이스로 만들고,
Car라는 인터페이스를 AbstractCar에 구현시키고 추상클래스로 만들어서 구현의 부담을 감소시키고, 각각 Tico와 Genesis에 상속시켰습니다.
추가로 Genesis에 부가기능으로 Highpassable, HeaderDisplay를 구현시켰습니다. Genesis의 1,2행을 보면 상속을 하나받고, 3가지를 다중으로 구현 받은 것을 볼 수 있습니다. 각 클래스들에 맞게, 메소드들을 구현한 것을 볼 수 있습니다.
복잡한 여러가지 기능을 가진 Genesis클래스의 구조를 보면 위 사진과 같습니다.
세번째 사진에 왼쪽을 보면, 타입과 참조변수의 상속관계에 따라 다르게 참조를 가지는 메소드를 보실 수 있습니다.
인터페이스 예제들을 보면, 처음에 상속과 헷갈리기도 하고, 갑자기 늘어난 클래스 파일에 혼동이 올 수 있습니다.
구조를 생각하고 필요성을 따져가면서 천천히 따라가시길 권장드립니다.
몇 가지 예제가 더있으니 참고하시길 바랍니다.
'Programming > JAVA' 카테고리의 다른 글
JAVA Web#17 Day 17 Eclipse 설치 & 초기설정 (0) | 2019.03.18 |
---|---|
JAVA Web#16 Day 16 중첩 클래스 & 익명 객체 (0) | 2019.03.15 |
JAVA Web#14 Day 14 super & 추상화 (0) | 2019.03.10 |
JAVA Web#13 Day 13 Casting & InstanceOf (0) | 2019.03.08 |
JAVA Web#12 Day 12 상속 & 메소드 재정의(@OVerride) (0) | 2019.03.07 |
- Total
- Today
- Yesterday
- Oracle
- 자바 독학
- 스프링
- spring
- 데이터베이스
- sql
- 태그
- 중앙HTA
- Class
- 자바 기초
- html
- 국비
- 비등가조인
- 자바
- 이클립스
- querybox
- 강제형변환
- inline element
- copotter
- block element
- jhta
- 프레임워크
- API
- 인라인엘리먼트
- 블록엘리먼트
- h#
- 브라캣
- 자바 국비
- 오라클 문법
- Database
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |