목표 : 인터페이스(InterFace) 이해하기
(더 알아갈때마다 수정) 첫 작성 : 2023-10-20 최종수정 :
1. 인터페이스
- 인터페이스에서 생성된 모든 메소드는 추상 메소드이다
- 인터페이스 내에서는 인스턴스 생성 불가
- 생성된 메소드는 상수로 생성됨
(외부에서 수정 불가)
- 생성된 메소드는 반드시 사용할 것!
(사용안하면 에러 발생)
- class와 다르게 다중상속 가능 (가장 좋은 기능인듯)
2. 사용 방법
- 인터페이스 만들기
interface (인터페이스 이름) {
}
- 메소드 생성
void (메소드 이름)();
- 메소드를 사용 할 class 생성
public class (클래스 이름) implements (인터페이스 이름) {
}
- 메소드에 구현할 기능 넣어주기
@Override
public void (추상 메소드 이름)() {
System.out.println("ShackBurger");
}
Tip) 추상 메소드를 생성하고 class에 인터페이스를 상속하면 빨간줄 쫙 붙으며 에러가 발생하는데 Alt + Enter 를 누르면 메소드 생성하라고 뜬다 생성하면 자동으로 생성 됨 (일일히 작성할 필요 없다는 뜻!)
- 기능을 구현한 메인영역에서 실행하기
(기능을 구현한 class 이름) 인스턴스 이름 = new (기능을 구현한 class 이름)();
(인스턴스 이름).(메소드 이름)
- 출력
--------------------------------------- --------------------------------------- --------------------------------------- -----------------------------------------
궁금한 점 : 단순히 문자출력 말고도 if문 같은 것도 넣을 수 있는가? / 오늘 해보고 TIL 작성시간이 된다면 작성 /
결론 : 쌉가능
인터페이스를 이용하여 키오스크 만들다 느낌점
버거 이름과 가격, 설명을 전부 추상화 하고 하나하나 인스턴스로 생성하고 값을 넣어주니 코드가 미친듯이 길어진다
다 만들고 난 후엔 유지보수나 수정이 쉽겠지만 만드는 과정이 단순 반복을 엄청 해야 하는 일이라 여기서 그만 멈춰야겠다라는 생각이 들었다
노가다로 만들 시간에 다른걸 하나 더 공부하는게 이득일듯?
ackage Kiosk2;
import java.util.Scanner;
public class MenuList implements BurgerList {
Scanner sc = new Scanner(System.in);
// 메뉴 종류
@Override
public void burgers() {
System.out.println("1. Burgers | 앵거스 비프 통살을 다져만든 버거");
}
@Override
public void forzenCustard() {
System.out.println("2. Forzen Custard | 매장에서 신선하게 만드는 아이스크림");
}
@Override
public void drinks() {
System.out.println("3. Drinks | 매장에서 직접 만드는 음료");
}
@Override
public void beer() {
System.out.println("4. Beer | 뉴욕 브루클린 브루어리에서 양조한 맥주");
}
@Override
public void order() {
System.out.println("5. Order | 장바구니를 확인 후 주문합니다.");
}
@Override
public void cancel() {
System.out.println("6. Cancel | 진행중인 주문을 취소합니다.");
}
// 버거 이름
@Override
public void shackBurger() {
System.out.println("ShackBurger");
}
@Override
public void smokeShack() {
System.out.println("SmokeShack");
}
@Override
public void shroomBurgurs() {
System.out.println("Shroom Burger");
}
// 버거 가격
@Override
public void shackPrice() {
System.out.println(6.9);
}
@Override
public void smokePrice() {
System.out.println(8.9);
}
@Override
public void shroomPrice() {
System.out.println(9.4);
}
// 버거 설명
@Override
public void shackExplanation() {
System.out.println("토마토, 양상추, 쉑소스가 토핑된 치즈버거");
}
@Override
public void smokeExplanation() {
System.out.println("몬스터 치즈와 체다 치즈로 속을 채운 베지테리안 버거");
}
@Override
public void shroomExplanation() {
System.out.println("몬스터 치즈와 체다 치즈로 속을 채운 베지테리안 버거");
}
@Override
public void kiosk() {
MenuList BLine = new MenuList();
MenuList FLine = new MenuList();
MenuList DLine = new MenuList();
MenuList BeerLine = new MenuList();
System.out.println("[ ORDER MENU ]");
MenuList OL = new MenuList();
MenuList CL = new MenuList();
System.out.printf("\"SHAKESHACK BURGER 에 오신걸 환영합니다.\"", "\n아래 메뉴판을 보시고 메뉴를 골라 입력해주세요.", "\n[ SHAKESHACK MENU ]");
BLine.burgers();
FLine.forzenCustard();
DLine.drinks();
BeerLine.beer();
OL.order();
CL.cancel();
int num = sc.nextInt();
if (num == 1) {
System.out.println(1);
}
}
}
인터페이스
package Kiosk2;
public interface BurgerList {
// 메뉴 종류
void burgers();
void forzenCustard();
void drinks();
void beer();
void order();
void cancel();
// 버거 이름 메소드 생성
void shackBurger();
void smokeShack();
void shroomBurgurs();
// 버거 가격 메소드 생성
void shackPrice();
void smokePrice();
void shroomPrice();
// 버거 설명 메소드 생성
void shackExplanation();
void smokeExplanation();
void shroomExplanation();
// 키오스크 첫 화면 메소드 생성
void kiosk();
}
다형성이란? (0) | 2023.11.08 |
---|---|
필드, 메소드, 매개변수 (0) | 2023.11.07 |
키오스크 다시한번 (0) | 2023.10.29 |
2023-10-23 간단한 게시판 만들기 (1) | 2023.10.23 |
2023-10-19 TIL (1) | 2023.10.20 |