[멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 Java 부트캠프 8일차

2024. 12. 11. 16:39·🏕 멋사 Java 백엔드 13기/TIL

1️⃣ 인터페이스

 

📑목적 

  • 표준화 : 특정 기능 제공해야하는 클래스들이 동일한 메서드 형태를 갖게 함
  • 다형성 : 인터페이스 타입으로 다양한 구현체 처리 가능
  • 느슨한 결합 : 의존성을 인터페이스로 추상화해서 유지보수성과 확장성 향상

📑 특징

  • 추상 메서드 + (Java 8 이후) default, static 메서드 허용 
  • public static final 상수만 사용 가능 ( 일반 변수 불가)

📑 구조

[public] interface 인터페이스 이름 {...}
[public] class 클래스명 implements 인터페이스명{ ...}

📑 예제

LTV, STV는 github 참고 

public interface TV {

    public void togglePower();
    public void volumeUp();
    public void volumeDown();
    public void channelUp();
    public void channelDown();
    public void setChannel(int channel);
    public default  void abc(){
    }
}

 

public class TVUser {

    public static void main(String[] args) {

//        STV stv = new STV();
//        stv.togglePower();
//        stv.channelUp();
//        stv.channelUp();
//        stv.volumeDown();
//        stv.channelUp();
//        stv.volumeUp();
//        stv.togglePower();

//        LTV ltv = new LTV();
//        ltv.setPower();
//        ltv.channUp();
//        ltv.channUp();
//        ltv.soundUp();
//        ltv.channUp();
//        ltv.soundUp();
//        ltv.setPower();

        //STV에서 LTV로 변경할 때 인터페이스를 활용 
        TV tv = new LTV();
        tv.togglePower();
        tv.channelUp();
        tv.channelUp();
        tv.volumeDown();
        tv.channelUp();
        tv.volumeUp();
        tv.togglePower();
    }
}

 

📑 default 메서드


인터페이스의 구현체를 가질 수 있음(구현된 형태의 메서드를 가짐)

interface Animal {
    String getFood();

    default void printFood() {
        System.out.printf("my food is %s\n", getFood());
    }
}

 

📑 static 메서드

  • 헷갈려서 다시 정리해야함 
public interface MyInterface {
//    public static final int CONSTANT = 10;  //상수는 대문자로
    public int CONSTANT = 10;  //interface에서 public static final 생략 가능 
    
    // 추상 메서드 
    void doSomething();

	// default 메서드
    public default void doDefault(){ // default 메서드
        System.out.println("구현이 가능하다. ");
    }

	// static 메서드
    public static void staticMethod(){ // static 메서드
        System.out.println("인터페이스의 static 메서드");
    }
}

📑 다중 구현

public interface Flyable {
    void fly();
}

public interface Swimable {
    void swim();
}

public class Duck implements Flyable, Swimable {
    @Override
    public void fly() {
        System.out.println("오리가 날아갑니다.");
    }

    @Override
    public void swim() {
        System.out.println("오리가 물에서 헤엄칩니다.");
    }
}

public class Main {
    public static void main(String[] args) {
        Duck duck = new Duck();
        duck.fly();
        duck.swim();
    }
}

 

2️⃣ 예외 처리

 

프로그램 실행 중 발생할 수 있는 예외를 안전히 처리하는 프로그래밍 기법.

예외가 발생하면 예외가 발생한 지점부터 실행되지 않는다.

 

📑 구조

try { 예외가 발생할 수 있는 코드 포함}
catch {try 블록에서 발생한 예외 처리}
fianlly {예외 발생 여부와 관계없이 실행됨}

 

📑 코드

public class ExceptionExam02 {

    public static void main(String[] args) {
        int[] iarr = {0,1,2,3};

        try {
            System.out.println(iarr[3]); // 에러(1) 
            int i = iarr[3]/iarr[0]; 	// 에러(2)
            System.out.println("다음 문장");
            System.out.println("그 다음 문장");

        }catch(ArrayIndexOutOfBoundsException e) { // 에러(1) 대처
            System.out.println(e);
        } catch(ArithmeticException e) {			//에러(2) 대처
            System.out.println(e.getMessage());
            
		/*
        } catch(Exception e){  // 모든 에러 대처
        System.out.println(e);
        }
        */
        
        }finally {
            System.out.println("finally~ 반드시 실행되는 블럭");
        }
            System.out.println("다음 문장");
            System.out.println("그 다음 문장");
        }
    }

 

 

 

📑 복기 시간

 

(1) 컴파일시점 런타임 시점

'🏕 멋사 Java 백엔드 13기 > TIL' 카테고리의 다른 글

[멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 Java 부트캠프 12일차 | DB  (2) 2024.12.17
[멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 Java 부트캠프 11일차 | DB  (1) 2024.12.16
[멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 Java 부트캠프 6일차  (2) 2024.12.09
[멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 Java 부트캠프 4일차  (0) 2024.12.05
[멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 Java 부트캠프 3일차  (1) 2024.12.04
'🏕 멋사 Java 백엔드 13기/TIL' 카테고리의 다른 글
  • [멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 Java 부트캠프 12일차 | DB
  • [멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 Java 부트캠프 11일차 | DB
  • [멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 Java 부트캠프 6일차
  • [멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 Java 부트캠프 4일차
Cofish
Cofish
  • Cofish
    Codesea
    Cofish
  • 전체
    오늘
    어제
    • 분류 전체보기 (19)
      • 🏕 멋사 Java 백엔드 13기 (17)
        • TIL (15)
        • 자료구조 (2)
      • 네트워크 (2)
        • TCP•IP (2)
      • 🎨 블로그 꾸미기 (0)
      • 💬 일상 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백엔드 java 부트캠프
    MySQL
    부트캠프
    java 기초
    db 기초
    #멋쟁이 사자처럼
    디자인 패턴
    멋쟁이 사자처럼
    멋쟁이사자처럼 #부트캠프
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
Cofish
[멋쟁이사자처럼 부트캠프 TIL 회고] 백엔드 Java 부트캠프 8일차
상단으로

티스토리툴바