상세 컨텐츠

본문 제목

2023-10-20 TIJava 인터페이스

Java TIL

by 개발일지작성 2023. 10. 20. 18:44

본문

728x90

목표 : 인터페이스(InterFace) 이해하기

(더 알아갈때마다 수정) 첫 작성 : 2023-10-20     최종수정 : 

 

1. 인터페이스

   - 인터페이스에서 생성된 모든 메소드는 추상 메소드이다

   - 인터페이스 내에서는 인스턴스 생성 불가

   - 생성된 메소드는 상수로 생성됨

       (외부에서 수정 불가)

   - 생성된 메소드는 반드시 사용할 것!

       (사용안하면 에러 발생)

   - class와 다르게 다중상속 가능 (가장 좋은 기능인듯)

 

2. 사용 방법

   - 인터페이스 만들기

         interface (인터페이스 이름) {

}

 

 

   - 메소드 생성

          void (메소드 이름)();

public abstract 를 붙였지만 안붙여도 컴파일 시  자바에서 자동으로 붙여줌

 

   - 메소드를 사용 할 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();
}

'Java TIL' 카테고리의 다른 글

다형성이란?  (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

관련글 더보기