일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- gitbash
- 자료구조
- CTF
- 웹해킹기초
- bootstrap
- 써니나타스
- 웹개발
- 워게임추천
- 이진트리
- 이진탐색트리
- node
- 워게임
- MongoDB
- NavBar
- 포렌식워게임
- wargame.kr
- node.js
- Express
- 자바문제풀이
- nodeJS
- 뷰
- GIT
- 웹기초
- 자바
- 포렌식
- 자바기초
- materialize
- 웹해킹
- 그래프
- mongoose
- Today
- Total
보안 전공생의 공부
인터페이스 본문
( 참조 : limkydev.tistory.com/197
◆ 인터페이스(interface) : 동일한 목적 하에 동일한 기능을 수행하게끔 강제하는 것
- 자바의 다형성 (객체가 한 개 이상의 자료형 타입을 갖게되는 특성) ↑
- 개발코드 수정 ↓ -> 프로그램 유지보수성 ↑
· 선언 : interface
public interface 인터페이스명 {
//상수
타입 상수명 = 값;
☞ 인터페이스에서 제공하는 값을 참조만 !
//추상 메소드
타입 메소드명(매개변수, ...);
☞ 추상메소드를 오버라이팅해서 재구현
//디폴트 메소드
default 타입 메소드명(매개변수, ...){
//구현부
};
☞ 인터페이스에서 기본적으로 제공 , 각자 구현 가능
//정적 메소드
static 타입 메소드명(매개변수){
//구현부
}
☞인터페이스에서 제공해주는 것 사용
}
class를 생성하지 않고, interface를 생성해준다.
육식동물(Predator) 인터페이스를 작성하였다.
이때, 추가한 getFood 메소드는 이름과 입출력에 대한 정의만 하고 그 내용은 적지 않는다 !!
인터페이스를 implements한 클래스들이 구현해야한다.
· 구현 : implements
우선 Animal 클래스를 생성하였다. 앞으로 생성할 육식동물 클래스들(Predator인터페이스를 implements함)의 부모클래스이다.
클래스 Lion, Tiger을 생성하였다. 각각의 클래스에서 getFood메소드를 구현하도록 하였따.
Lion은 "banana"를, Tiger은 "apple"을 리턴하도록 하였다.
사육사 클래스인 ZooKeeper클래스를 정의하였다.
feed 메소드의 입력으로 각각의 동물클래스(Tiger tiger, Lion lion)이 필요하지만
이를 한 번에 Predator 인터페이스로 대체한다 !
tiger, lion은 Tiger, Lion의 객체이면서 Predator 인터페이스의 객체이기도 하기 때문에
Predatore을 자료형의 타입으로 사용가능하다.
구현체 (Tiger, Lion 등등 추가 클래스)가 늘어나도
인터페이스는 오직 하나이기 때문에
나중에 추가로 육식동물 클래스를 늘려도
feed 메소드를 추가할 필요없이
추가하는 클래스의 getFood()메소드를 추가하면 된다.
위의 코드를 실행해보면
이렇게 feed + 각 클래스에 정의한 getFood 리턴값이 출력된다
'Language > JAVA' 카테고리의 다른 글
프로세스(process) vs 스레드(thread) (0) | 2021.02.26 |
---|---|
문제풀이 (0) | 2021.02.15 |
상속, 다형성, 추상 클래스 (0) | 2021.02.14 |
클래스 관련 문제풀이 (0) | 2021.01.31 |
클래스(2) | 접근 제어자, 정적변수·메소드 (0) | 2021.01.31 |