티스토리 뷰
[java 23강] 인터페이스 (interface)
우선 강의에 앞서 미리 선행해야할 강의들이 있습니다.
19강 상속강좌 --> http://bvc12.tistory.com/176
21강 오버라이드(오버로딩) 강좌 --> http://bvc12.tistory.com/178
22강 추상 클레스 강좌 --> http://bvc12.tistory.com/179
이번강의에서는 자바 인터페이스 (interface) 대해서 알아보겠습니다.
우선 자바는 다중상속이 안됩니다.
그럼 여러개를 상속받아야 한다면 어떡해 하실껍니까?
하나의 클레스에 여러가지를 넣고 하나만 상속하면될까요...?
여러게의 메소드를 넣은 상태로 클레스를 만들고... 여러클래스에 여러게의 메소드를 넣은 클레스가 상속이 되어있다고 생각해봅시다..
분명히 하나 수정할때마나 에러가 터져나올것입니다...
이것을 결합도가 높다고 할수 있습니다....
그러면.. 다른방법을 생각해 봅시다...
추상클래스에 추상메소드를 여러개 생성해놓고 하나만 상속해서 쓰면될까요??
추상클레스가 만약 완벽하지 않아서 추상메소드를 만약 하나 추가한다면......
추상클레스가 상속된 모든 클레스들을 찾아가 추가된 메소드만큼 오버라이드를 해야하는 불쌍사가 발생합니다.....
그럼 어떡할까요?
결론은 그래서 인터페이스를 사용합니다.
인터페이스는 다중으로 implements 할수 있습니다.
다중으로 implements 할수 있다는것은 여러개로 만들어 놓고 합쳐서 사용할수 있다는것입니다.
그러므로 결합도가 낮아지고... 필요할때 마다 추가해서 사용을 할수 있다는것입니다.
하지만 인터페이스는 목차와 같은 역활만 합니다.
인터페이스에 메소드를 추상메소드처럼 만들수만있고 내용들은 오버라이드 하여 사용하여야 합니다.
(메소드만 생성할수 있습니다.. 만약 변수들을 생성하면 컴파일이 되면서 스테틱이 붙을것입니다..)
인터페이스 작성 문법은
interface 인터페이스명 {}
입니다.
implements 작성 문법은
class 클레스명 implements 인터페이스명 {}
입니다.
바로 예제를 확인해 보겠습니다
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | package test123123; public class java23 { public static void main(String[] args) { DD dd = new DD(); dd.test(); dd.test2(); dd.test3(); dd.test4(); } } interface CC { public void test(); public void test2(); } interface EE { public void test3(); public void test4(); } class DD implements CC, EE{ @Override public void test() { System.out.println(1); } @Override public void test2() { System.out.println(2); } @Override public void test3() { System.out.println(3); } @Override public void test4() { System.out.println(4); } } | cs |
결과
예제 설명
인터페이스 CC, EE 를 만들어 주었습니다. 각각 메소드를 2개씩 만들어 주었습니다.
클래스 CC 를 만들어주면서 앞에서 만들었던 인터페이스 CC,EE 를 implements 해주었습니다.
인터페이스 CC,EE 의 메소드들을 오버라이드 하여 재정의 하였습니다. (모두다 출력 메소드)
DD 클래스를 생성하여 DD 클래스들의 메소드 들을 실행하였습니다.
그결과 콘솔창에 1,2,3,4 가 출력되는것을 확인할수 있습니다.
이렇게 예제를 살펴보았습니다.
인터페이스 부분은 아마도 확! 느낌이 오지 않으실수 있습니다.
만약 만들고 있는 프로젝트의 양이 적거나 혼자 개발을 한다면 더더욱... 이해가 안되실수 있습니다.
하지만 프로젝트의 양이 어마어마하고... 개인이 아닌 팀단위로 코딩을 한다면... 인터페이스를 사용할것입니다...
(인터페이스를 사용하므로 가이드 라인? 은 생긴다..)
이상으로 인터페이스 강의를 마치겠습니다.
수고하세요! ㅎㅎ
'Programming > JAVA, Spring' 카테고리의 다른 글
[java 25강] 익명 클래스(Anonymous Class) (0) | 2018.03.06 |
---|---|
[java 24강] 내부 클래스(Inner Class) (0) | 2018.03.05 |
[java 22강] 추상 클레스 (Abstract Class) (2) | 2018.02.19 |
[java 21강] 오버라이딩 (Overriding,오버라이드,Override), 슈퍼 (super) (0) | 2018.02.18 |
[java 20강] 정적변수와 메소드 (static) (0) | 2018.02.14 |
- Total
- Today
- Yesterday
- 알뜰 저렴한 요금제
- 저렴한 요금제
- 티스토리
- 자바
- 0원 요금제
- 티스토리초대장확인
- 티스토리 가입
- 제주도가볼만한곳
- 별정 저렴한 요금제
- 별정통신사 저렴한 요금제
- 별정통신 저렴한 요금제
- 정보처리기사
- Javascript
- 핸드폰 저렴한 요금제
- 알뜰통신 저렴한 요금제
- 초대장
- 알뜰통신사 저렴한 요금제
- 제이쿼리
- 무실적 체크카드
- 자바스크립트
- 알뜰폰 저렴한 요금제
- jsp 태그
- 티스토리 초대장
- 티스토리 블로그
- 조던
- 1000원 요금제
- java
- JQuery
- 핸드폰 싼 요금제
- 핸드폰 만원 미만 요금제
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |